猿问

具有多个列的单个固定表与灵活的抽象表

我想知道,如果你有十几种不同类型的列表的网站(商店,餐馆,俱乐部,酒店,活动)需要不同的领域,在那里,象这样定义的列创建表的好处

举例店:


shop_id | name | X | Y | city | district | area | metro | station | address | phone | email | website | opening_hours

或更类似于此的抽象方法:


object_id | name        

---------------

1         | Messy Joe's  

2         | Bate's Motel 


type_id | name

---------------

1       | hotel

2       | restaurant



object_id | type_id

---------------

1         | 2

2         | 1


field_id | name           | field_type

---------------

1        | address        | text

2        | opening_hours  | date 

3        | speciality     | text


type_id | field_id

---------------

1       | 1

1       | 2

2       | 1

2       | 3


object_id | field_id | value

1         | 1        | 1st street....

1         | 3        | English Cuisine

当然,如果预定义了值,可能会更抽象(例如:专业可以有自己的列表)


如果我采用抽象方法,它可能会非常灵活,但是如果进行大量联接,查询将变得更加复杂。但是我不知道这是否会影响性能,执行这些“更复杂”的查询。


我想知道这两种方法的优点和缺点。我可以自己想象,但是我没有经验来确认这一点。


守着星空守着你
浏览 505回答 3
3回答

鸿蒙传说

当您开始需要大量不同的实体时(甚至在之前……),nosql解决方案将比任何一种选择都简单得多。只需将每个实体/记录与所需的确切字段一起存储即可。{   "id": 1,   "type":"Restaurant",   "name":"Messy Joe",   "address":"1 Main St.",   "tags":["asian","fusion","casual"]}
随时随地看视频慕课网APP

相关分类

MySQL
我要回答