我有兩個表。 「用戶」和「電影」。用戶表由「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. 從mysql中的同一個表中獲取父子關係的所有數據
- 6. 父子關係PHP和MYSQL
- 7. 在SharePoint列表中表示父子關係
- 8. 使用recurssion刪除mysql表中的父子關係
- 9. 帶有Ebean的Java樹(同一表中的父子關係)
- 10. Mysql Self加入以查找同一個表中的父母子女關係
- 11. 在現有父子關係表中填充hierarchyid列?
- 12. 鏈接兩個相關的父子表的子表
- 13. SCKNNode在SceneKit中的父子關係?
- 14. SQL - 不同記錄中的父子關係
- 15. Mysql的父ID子ID關係
- 16. 父子關係
- 17. 父子關係
- 18. 父子關係
- 19. JPA在同一父類中映射同一子關係兩次(不同基數)
- 20. 從鏈接列表中單擊不同的鏈接
- 21. MY SQL,從同一個表中的父子關係從其他表獲得子值獲取列名
- 22. 在Neo4j中創建唯一鏈接列表節點/關係
- 23. 在MarkLogic中存儲父子關係
- 24. 在父子關係中使用泛型
- 25. Mysql的父子在同一個表
- 26. 訪問不導入MySQL鏈接表的關係
- 27. gradle中的依賴關係不會鏈接罐子
- 28. 查詢在mysql中結合父子關係
- 29. MYSQL父母關係
- 30. MySQL查詢爲父子關係
我的不好,我做了一個錯誤的解釋。這些不是真正的電影。這只是電影列表。您可以將另一部電影添加到列表中,或者觀看您喜歡的最喜歡的電影列表。我無法再創建更多表格。說明書說我必須只使用2個表格,用戶和電影。 –
哦,這是作業。告訴你的老師這是一個可怕的設計,並在標記爲正確之後向他展示Jonathon的回答;) –