我正在用 php 和 SQL 做一个小项目,以便让我的脚湿透数据库。我没有接受过任何正式的数据库培训,我只是对 SQL 有一定的了解。
我计划跟踪对象表中的对象和属性表中的属性。假设有 100 个属性,但将来可能会扩展。这两个表都只需要两列。
天真地,我会在表中记录哪些对象具有哪些属性,其列是属性 ID,行是对象 ID。这些条目将只是布尔值“真/假/空”,具体取决于对象是否已知具有或缺少该属性。每当添加一个新对象时,都需要添加一行及其 100 列。添加新属性时,必须为每个对象添加一列和一行。
但是,我之前读过,如果您担心有多少列,那么您有一个设计问题。一位朋友向我推荐了一张备用桌子。它将包含三列,一个条目将仅包含对象 ID、属性 ID 和相应的布尔值。在这个方案中,添加一个新对象需要向该表添加 100 个新行。
有人可以澄清这两种设计中哪一种更好,为什么?由于某种原因,拥有很多列是否比拥有很多行更成问题?
如果这是一个重复的问题,我完全不会感到惊讶,在这种情况下,我感谢您帮助我指出正确的问题。谢谢!