我正在做一个PHP和SQL的小项目,让我的脚湿润与数据库。我没有任何正式的数据库培训,我只是具有SQL的工作知识。基本数据库设计
我打算跟踪对象表中的对象和属性表中的属性。假设有100个属性,但未来可能会扩大。这两个表都只需要两列。天真地,我会记录哪些对象在一个表中具有哪些属性,其列是属性IDS,而行是对象标识。根据对象是否具有或不具有属性,条目将简单地为布尔型“true/false/null”。每当添加新对象时,需要添加一行100列。添加新属性时,必须添加一列包含每个对象的行。
但是,我已经阅读过,如果你担心有多少列,你有设计问题。一位朋友向我建议了一个备用桌子。它会有三列,一个条目只包含对象ID,属性ID和相应的布尔值。在这个方案中,添加一个新对象需要在这个表中添加100个新行。
有人可以澄清两种设计哪种更好,为什么?由于某些原因,有很多列比有很多行更麻烦?
如果这是一个重复的问题,我完全不会感到惊讶,在这种情况下,我很感谢您帮助我指出正确的问题。谢谢!
100列?我不可能明白为什么你需要这么多列。 SQL的工作知识并没有真正帮助数据库设计。看看[数据库规范化](http://en.wikipedia.org/wiki/Database_normalization)和[关系模型](http://en.wikipedia.org/wiki/Relational_model) – Kermit
@njk我希望不要使用那么多,我只是说从初学者的角度来看,$ m \ grid是设想记录$ n $对象上$ m $属性状态的最简单方法。我意识到它可能更好地以不同的方式存储。 – rschwieb