我有两个表。 “用户”和“电影”。用户表由“id”(自动增量),“名称”和“密码”列组成。现在有2个用户名存储。电影表中有'标题'和'年份'栏。 PHP脚本允许每个用户观看和添加新电影到他们的列表中。我如何链接或建立父母 - 子女关系或使其在MySQL中发生所需的任何事情?哦,我也用Adminer。现在,当我登录一个用户时,我仍然可以看到与其他用户已添加的相同电影。在MySql /父子关系中链接不同表中的列
回答
您需要在两个表格之间创建一个“多对多”关系。
要做到这一点:
- 首先,在
Movies
表中创建一个ID
列唯一标识每一个 - 然后,创建另一个表名为
user_movies
(或“关注”或有用的东西),那包含用户ID,电影ID以及您希望添加的任何其他信息,例如观看日期或评分(“星号”的数量等)。
然后,无论何时用户观看电影,添加一条记录到th e user_movies
表来标记他们已经完成的事实。
它应该是多对多的,因为每个用户都可以看几部电影,但每部电影都可以被多个用户观看。在这种情况下,“亲子”关系并不合适,是一对多的关系。
如果您坚持只使用评论中所述的两个表格,则必须重新设计Movies表格以包含标识哪个用户创建该条目的列UserID。然后,您可以过滤数据,以便用户只能看到有关他们添加到列表中的影片的信息。
这不是一个好设计 - answer由Jeremy Smyth暗示一张额外的表格将电影与用户联系起来要明智得多,但你已经指出这是不允许的。这不是一个好设计的原因是,你最终会得到很多行,表明同一年发行的同一部电影,每行都由不同的用户输入,因此不必要的重复。也有更多的机会出现错误;你将获得1938年“飘”的参赛作品,1939年的“飘”,以及1940年的“飘”,当时只有一年(1939年)。
能否请您具体谈谈我有什么做的......
在两表,唯一的系统,你会创建电影表是这样的:
CREATE TABLE Movies
(
Title VARCHAR(32) NOT NULL,
Year INTEGER NOT NULL,
UserID INTEGER NOT NULL REFERENCES Users(ID),
PRIMARY KEY(Title, Year, UserID)
);
当您向此表中插入记录时,您将记录插入的用户的ID,以便查询谁创建了哪些电影记录。
如果你实际上要从数据库的其他地方引用这个表,那么你可以在这里添加一个ID列,但是如果有更多的表,那么你会从这个表中删除UserID列并创建一个关系表:
CREATE TABLE Movies
(
ID INTEGER AUTOINCREMENT PRIMARY KEY,
Title VARCHAR(32) NOT NULL,
Year INTEGER NOT NULL,
UNIQUE(Title, Year)
);
CREATE TABLE Users_Movies
(
MovieID INTEGER NOT NULL REFERENCES Movies(ID),
UserID INTEGER NOT NULL REFERENCES Users(ID),
PRIMARY KEY(MovieID, UserID)
);
现在你可以有“乱世佳人” 1939年二十个不同的人一个记录,这可能ID号码207,并可能会列出MovieID 207作为他们的电影之一,在20个简单的记录Users_Movies表。
你可以更具体地说明我必须做什么,按什么顺序以及在哪里点击。我刚开始学习。现在使用phpmyadmin。 –
完全可以如何操作此部分“可以识别哪个用户创建了该条目,然后您可以过滤数据,以便用户只能看到他们添加到列表中的影片的相关信息。” 我对这一切都很陌生,所以如果你能用一些直接的指示来帮助我,那将不胜感激。提前致谢 –
- 1. SQLAlchemy - 同一表中的父子关系
- 2. 在mysql中获取父/子/子关系
- 3. 在SQL Server中设计邻接列表或父子关系?
- 4. 亲子关系(链接列表)
- 5. 父子关系PHP和MYSQL
- 6. 在SharePoint列表中表示父子关系
- 7. 使用recurssion删除mysql表中的父子关系
- 8. 带有Ebean的Java树(同一表中的父子关系)
- 9. Mysql Self加入以查找同一个表中的父母子女关系
- 10. 在现有父子关系表中填充hierarchyid列?
- 11. 链接两个相关的父子表的子表
- 12. SCKNNode在SceneKit中的父子关系?
- 13. SQL - 不同记录中的父子关系
- 14. 父子关系
- 15. 父子关系
- 16. Mysql的父ID子ID关系
- 17. 父子关系
- 18. JPA在同一父类中映射同一子关系两次(不同基数)
- 19. MY SQL,从同一个表中的父子关系从其他表获得子值获取列名
- 20. 在Neo4j中创建唯一链接列表节点/关系
- 21. 在父子关系中使用泛型
- 22. 在MarkLogic中存储父子关系
- 23. Mysql的父子在同一个表
- 24. 访问不导入MySQL链接表的关系
- 25. MYSQL父母关系
- 26. MySQL查询为父子关系
- 27. MySQL&PHP - 创建多个父子关系
- 28. 检索关系数据库中链接列表的条目
- 29. 从具有父子关系的单个表中创建mySQL联结表
- 30. 关注OCL中的链接列表
我的不好,我做了一个错误的解释。这些不是真正的电影。这只是电影列表。您可以将另一部电影添加到列表中,或者观看您喜欢的最喜欢的电影列表。我无法再创建更多表格。说明书说我必须只使用2个表格,用户和电影。 –
哦,这是作业。告诉你的老师这是一个可怕的设计,并在标记为正确之后向他展示Jonathon的回答;) –