snake_caseand should clearly describe the purpose of the table itself.
Doorand a table named
snake_caseappropriations. The column itself should very easily describe the purpose of the column itself without abbreviations as much as possible.
p_cp, it is far easier for new server operators and developers to understand
player_copper, don't be lazy and don't be afraid to be verbose.
keyringand the schema looks like this:
character_datatable (Which currently breaks convention and should be called
itemstable and we resolve to
idcolumn with an auto-incrementing integer. This makes sequencing easier.
saylink(should be plural) that contains
phrasewhich gets looked up frequently when a saylink is clicked or when saylinks are being parsed inside of a
quest::saycontext, this lookup and scan gets expensive when there is no index on the column itself. What ends up happening is that the MySQL engine ends up having to do full table scans to find the phrase corresponding to the requested record to see if it exists or lookup and ID associated to said saylink.
id- you already get indexing out of the box, there is no additional indexes required.
datetimefield to mark that entity as deleted and then make sure you use queries that take into consideration where
deleted_atis null (An index may be appropriate on this field).