資料庫設計情景之相同型別下的不同型別

2021-07-06 10:53:45 字數 679 閱讀 4356

已知使用者需要同時購買動物和石頭兩種不同的東西(只是隨便舉個例子,不要去糾結動物和石頭),這種情況一般有兩種設計方式:

方式一:

animal表+rock表+shop_car表

animal:

id int,name varchar,*** int,age int

rock:

id int,name varchar,weigth int,bulk int

shop_car:

id int,goods_type int–1表示動物,2表示石頭,goods_id int,count int

當商品的型別是固定的時候,那麼可以採用這種方式。

比如我這個商場只賣動物和石頭並且以後也只賣動物和石頭的時候,可以使用這種方式。

方式二:

goods表+shop_car表

goods:

id int,goods_type int–1表示動物,2表示石頭,name varchar,*** int,age int,weigth int,bulk int

shop_car:

id int,goods_id int,count int

當商品的型別是不確定的時候,那麼可以採用這種方式。

比如我這個商場雖然現在只賣動物和石頭但是以後也可能賣植物和沙子的時候,可以使用這種方式。

資料庫設計經驗之 表的設計

1 定義一些字典表,在命名字段並為其指定資料型別的時候要保證一致性,可以在字典表裡定義常用字段的名稱 型別 列舉值及其對應的意思。列舉值可以用整型 有大小關係,例如 許可權級別 或短字元 便於擴充,例如 渠道標識 這樣在實際表記錄中字段值可以較小,對於大表可以省空間,同時提高表掃瞄的效率。2 盡量不...

資料庫設計經驗之 索引的設計

1 索引應該有足夠的區分度,對區分度不大的列 例如列舉型別字段 不應該做索引 這時候應該考慮加上諸如時間範圍這樣的限制條件對記錄進行篩選 對乙個表中最影響效能的列,可以考慮做聚簇索引。2 小表少建索引或不建索引,可以載入到記憶體中訪問。3 索引字段一般為差異性較大 長度較小的型別,在這些欄位上經常做...

Form介面同一時間段中相同型別的資料不能同時啟用

一 與資料庫表中進行對比看能否插入或更改 實現 1 編寫檢查重複時間段的package procedure check date is v start date date v end date date v count number cursor accrual date cur is select...