blob: fd3cb0d336cc0680d9e0d8ef4f6f3d2e60b4bccc (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# General guidelines for Database schema:
- String fields whose values are NOT open-ended (ie can contain random strings) should be changed to either:
- an FK to a separate lookup table (when the domain of options is large or can grow)
- an enum (when there are a short list of essentailly static options)
- Field names should follow SQL standards:
- lower case
- underscore_separated_words
- options for designated models should be standardized with:
{
tableName: "table_name",
comment: "description of table if not self-evident",
timestamps: true,
createdAt: 'created_at',
updatedAt: 'updated_at',
indexes: [
{ <as required> }
]
};
## Note regarding field attributes specified in model:
- createdAt, updatedAt are renamed to abide by SQL standard.
- by default allowNull is false, so this attribute need only be specified when fields are NOT NULL.
- comment attribute should added to any field that is not self-evident
- may need to add indexes to more fields for rapid access
## Notes regarding changes / updates
- Some 1-1 tables are split up simply to separate scope or to control access permission (ie only user_preferences table may be edited by users themselves)
## Sequelize Operational Questions:
- Are indexes automatically generated by Sequelize migration for primary keys and/or foreign keys ?
- Does Sequelize add non-unique indexes for data mining if specified: eg { fields: ['username'] }
- Do timestamp fields require default value spec (eg Sequelize.NOW) ... or how can we define this in model ?
## Ongoing Questions:
- payments table needs to be investigated and refactored
- is invoices table required or is this just summary information ?
- orders table needs to be investigated and refactored
- need to add subscriptions table if applicable ( what is this comprised of ?)
- user_keys table should be commented to clarify application of each of these values.
|