Tes*_*sla 7 mysql database database-design
假设我有两个表(苹果和橘子)具有相同的列和只是一个不同的表名称.是否有任何优点/缺点将其转换为一个表(简称其称为Fruit),并附加一个列'type',然后存储Apple或Orange的值?
编辑澄清:
CREATE TABLE apples(id int,weight int,variety varchar(255))
CREATE TABLE oranges(id int,weight int,variety varchar(255))
要么
CREATE TABLE fruit(id int,weight int,varchar(255),type ENUM('apple','orange'))
取决于约束:
apples
不上不存在oranges
(或相反)?apple
与某些密钥相同的ID orange
)?如果这两个问题的答案是:"是"和"否",则保持表格分开(因此约束可以特定于表格1).
如果答案是:"no"和"yes",则将它们合并在一起(这样你就可以创建一个跨越两者的键).
如果答案是:"是"和"是",请考虑模拟继承2:
1 查找数据是看起来类似的表的典型示例,但必须保持独立,以便FK可以保持独立.
2具体来说,这是表示继承的"所有类在单独的表中"策略(也就是类别,子类,子类型,泛化层次等).您可能需要查看此帖子以获取更多信息.