使用MySQL我正在尝试使用已经上传到数据库的数据建立1对多的关系。例如,假设我在一个表中有一个名称列表,我想将它们连接到已经存在的地方列表。显然,一个人可以去很多不同的地方,但是我遇到了这个问题。
-----Name-----------ID---------
John Smith 1
Joe Random 2
Seth Guy 3
------------------------------
我有另一张表如下:
-------city---------ID---------
New York 1
Chicago 2
Orlando 3
LA 4
-------------------------------
我正在寻找类似的东西:
--------Name--------City----------
John Smith Chicago
John Smith Orlando
John Smith New York
Seth Guy Chicago
Joe Random LA
------------------------------------
我很明显知道约翰史密斯去过所有3个地点,因为我上传的原始文件告诉了我,但我希望数据库建立连接并相应地放置他们。
答案 0 :(得分:2)
如评论中所述,这是一种N-M关系,而不是1-N关系。你需要一个额外的"映射"表记录访问次数:
CREATE TABLE visits (
person_id INT,
city_id INT,
CONSTRAINT visits_pk PRIMARY KEY (person_id, city_id)
);
然后,您可以使用几个联接查询所有访问:
SELECT person.name, city.name
FROM person
JOIN visits ON person.id = visits.person_id
JOIN city ON visits.city_id = city.id
答案 1 :(得分:1)
引入一个保存关系的新表。
您的架构看起来像这样:
create table person (id, name)
create table city (id, name)
create table person_to_city (people_id, city_id)
在people_id和city_id上创建外键约束。