Osk*_*lin 27 database-design facebook facebook-like
我一直想知道facebook如何管理你可以"喜欢"的所有不同事物的数据库设计.如果只有一件事需要,这很简单,只是你喜欢的外键和你是谁的外键.
但是必须有数以百计的不同表格,你可以在Facebook上"喜欢".他们如何存储喜欢的东西?
Ada*_*son 25
如果要在关系数据库中表示此类结构,则需要使用通常称为表继承的层次结构.在表继承中,您有一个表定义父类型的表,然后是子表,其主键也是返回父类的外键.
使用Facebook示例,您可能会遇到以下情况:
User
------------
UserId (PK)
Item
-------------
ItemId (PK)
ItemType (discriminator column)
OwnerId (FK to User)
Status
------------
ItemId (PK, FK to Item)
StatusText
RelationshipUpdate
------------------
ItemId (PK, FK to Item)
RelationshipStatus
RelationTo (FK to User)
Like
------------
OwnerId (FK to User)
ItemId (FK to Item)
Compound PK of OwnerId, ItemId
Run Code Online (Sandbox Code Playgroud)
在兴趣完整性方面,值得注意的是Facebook并没有将RDBMS用于此类事情.他们为这种存储选择了NoSQL解决方案.但是,这是在RDBMS中存储这种松散耦合信息的一种方法.
| 归档时间: |
|
| 查看次数: |
18587 次 |
| 最近记录: |