假设您需要一个表来存储设置。例如,我想将车辆设置存储在一个表中,但是有超过100个设置,因此最好有一个包含100列的表或一个可能包含2列的表(1表示设置名称,1表示设定值)?
答案 0 :(得分:1)
我全都是为了正常化。所以我会创建三个表:Vehicle,Setting和VehicleSetting,它们有三列用于车辆ID,设置id和设置值。实际上我确实在生产中有这个实现。如果用户未明确指定值,我的设置表也会存储默认值。
如果您决定在将来添加设置,这种方法非常方便。您只需将另一条记录添加到设置表中,而不是修改表格并可能面临重构,您就可以开始使用了。
答案 1 :(得分:1)
要么有其优势和劣势。
为了灵活性,我会选择Vertical(每行中的每个设置)方法
如果您每行使用一个设置,
BUT(S)
100列方法
BUT(S)
答案 2 :(得分:1)
我不同意迪米特里的答案,但是提出另一方。
12或100查看您希望设置更改的频率。
如果每个设置都是一列,那么您可以更改新属性的程序。更简单的查询语法。如果它们是单值属性,那么我认为你仍然有第三种常规形式和更有效的查询。
如果您使用Dimitri建议的3个表,那么您的设计稍微复杂一些,但您可以添加和修改属性运行时。对于多个连接,查询将更复杂。您可以在设置表上构建查询以构建您的真实查询。我肯定会使用tcoder建议的游标连接。
如果您有.NET或其他前端,那么您也可以通过读取设置表来构建查询。如果你像GridView一样绑定你将无法生成列,但再也没有那么多工作。