我想知道如何在SQLite DB中有效地存储行的详细信息。 例如:
主表:
ID | NAME | CITY
1 |彼得|巴黎
2 |莎拉|纽约
3 |赛斯|芝加哥
我想在数据库中存储有关某个人的详细信息,但我不知道该怎么做。问题是数据可以在程序代码中表示为数组,但我不能在数据库中执行此操作。我虽然是这个:
表“person_1”:(用于存储城市中最喜欢的地方的表)
NAME |地址
艾菲尔铁塔| Champ de Mars,5 Avenue Anatole
卢浮宫博物馆MuséeduLouvre,75058 Paris
表“person_2”:(同一目的)
NAME |地址
世贸中心一号|富尔顿街285号
自由女神像|自由岛
与其他人一样......
这是正确的做法还是我可以更有效率地做到这一点?
答案 0 :(得分:2)
存储人们喜欢的主表:
id | name | address
1 | Peter | Paris
2 | Sarah | New York
喜欢的地方的Favorite_Place表;
id | name | address
1 | Eiffel Tower | Champ de Mars, 5 Avenue Anatole
2 | Musee du Louvre | Musée du Louvre, 75058 Paris
和中间表类似;
person_id | place_id
1 | 1
1 | 2
2 | 1
2 | 2
如果您设计类似的表格,则不能在favorite_place表格中一次又一次地存储喜欢的地点。
答案 1 :(得分:1)
这可以通过2个表来解决:
表人:
id | name | city
1 | Peter | Paris
2 | Sarah | New York
表最喜欢的地方:
id | person_id | name | address
1 | 1 | Eiffel Tower | Champ de Mars, 5 Avenue Anatole
2 | 1 | Musee du Louvre | Musée du Louvre, 75058 Paris
3 | 2 | One World Trade Center | 285 Fulton Street
通过这种方式,您可以轻松选择属于每个人的所有喜欢的地方。
您甚至可以编写查询来加入两个表:
SELECT p.name, f.name, f.address
FROM people AS p
JOIN favorites AS f ON p.id = f.person_id
你会得到:
Peter | Eiffel Tower | Champ de Mars, 5 Avenue Anatole
Peter | Musee du Louvre | Musée du Louvre, 75058 Paris
Sarah | One World Trade Center | 285 Fulton Street