我正在创建一个数据库,例如vehicles
的集合。有些是cars
,有些是卡车。所以我有一张这样的表:
COLLECTIONS: id, title, description
然后我有更多的表格,其中包含每个集合中的车辆清单。
我可以使用这样的多个表:
COLLECTION_CARS: collection_id, make, model, year
COLLECTION_TRUCKS: collection_id, make, model, year
或者我可以只有一个带有类型字段的表:
COLLECTION_VEHICLES: collection_id, vehicle_type, make, model, year. (And then just make the `vehicle_type` be `Car or Truck`)
哪个更好,主要是在性能方面?
答案 0 :(得分:1)
虽然在看到您打算运行的查询之前无法估计性能,但以下是您可以应用的一些常规注意事项:
COLLECTION_CARS
和COLLECTION_TRUCKS
中的总行数较小(例如,不到一百万),则该方法不太可能与性能观点有所区别除了性能之外,单个表格为您提供了更灵活的设计,因为添加新类型的车辆(例如,RV)不会改变数据库的结构。这也适用于查询:假设为COLLECTION_RV
添加第三个表,并更改加入SELECT
和COLLECTION_CARS
的所有COLLECTION_TRUCKS
,以便它们加入{{1} }}
答案 1 :(得分:0)
为什么不能只用一个额外的列创建一个表?如果您担心这一点,那对SQL性能最好。
COLLECTIONS: id, title, description, type, make, model, year
只需在SQL Server中打开一个新查询并运行此代码即可生成新表:
CREATE TABLE [dbo].[collections](
[id] [int] NULL,
[title] [varchar](50) NULL,
[description] [varchar](50) NULL,
[type] [varchar](5) NULL,
[model] [varchar](50) NULL,
[make] [varchar](50) NULL,
[year] [numeric](18, 0) NULL
) ON [PRIMARY]