我开始设计一个数据库驱动的网站。
我有两个类似的表,GPU vendor
和CPU vendor
。两者都有相同的列:id, vendor_name, vendor_url, vendor_bio
。
您可以制作单独的表格或将它们合并,也许添加类型column
?
我不希望自己的经验不足以阻碍我的设计。先想想,以后做! :)
答案 0 :(得分:3)
如果他们实际上是问题域中的“供应商”。我将创建一个表'VENDOR'并添加列'VENDOR_TYPE'以及其他列。
Table Vendor{
id,
vendor_type,
vendor_name,
vendor_url,
vendor_bio
}
但如果它们是两个逻辑上不同的实体类型,我会倾向于创建两个单独的表。在你的情况下它似乎是'VENDOR'而不是'GPUVendor'和'CPUVendor'
答案 1 :(得分:0)
YAU概述了答案。在大多数情况下,像我一样,我将两个表合并为一个,使用一个类型列来指示每个条目属于哪个类型。
这取决于您将如何使用数据。如果您的许多查询将GPU类型中的行与来自CPU类型的行组合在一起,那么单个表表将产生更好的结果。如果您的几乎所有查询都是关于GPU类型或专门关于CPU类型的,那么您将从两个表设计中获得更好的结果。
归根结底,这归结为YAU所说的:它们是两个实体还是一个实体。
我要补充一点,无论哪种方式,您都可以构建一个或两个视图,使数据看起来相反。如果创建单个VENDORS表,则可以创建仅选择CPU类型的CPU_VENDORS视图和仅选择GPU类型的GPU_VENDORS视图。然后,您可以在方便时访问这些视图。
如果采用双表设计,则可以创建单个VENDORS视图,该视图是GPU_VENDORS和CPU_VENDORS的UNION,并在需要时使用它。
除了效果效果之外,您还可以从视图中获得两全其美的效果。