我正在嘗試將應用程序的帳戶組織到「分層」網格系統中。MySQL可以在表內創建表嗎?
即Super_Grid_A具有網格1,2,在它3和電網1具有佔A,B,C在它,電網2具有佔B,C,d在它等
任何指針?
我正在嘗試將應用程序的帳戶組織到「分層」網格系統中。MySQL可以在表內創建表嗎?
即Super_Grid_A具有網格1,2,在它3和電網1具有佔A,B,C在它,電網2具有佔B,C,d在它等
任何指針?
您不能在MySQL中的表內創建表。但是你可以使用主/從方法來處理你的網格表。東西看起來就像這樣:
MySQL的32年5月5日架構設置:
CREATE TABLE grid
(`id` int, `name` varchar(12), `master_id` int)
;
INSERT INTO grid
(`id`, `name`, `master_id`)
VALUES
(1, 'Super_Grid_A', 0),
(2, 'Grid 1', 1),
(3, 'Grid 2', 1),
(4, 'Grid 3', 1)
;
CREATE TABLE account
(`id` int, `name` varchar(9))
;
INSERT INTO account
(`id`, `name`)
VALUES
(1, 'account A'),
(2, 'account B'),
(3, 'account C'),
(4, 'account D')
;
CREATE TABLE grid_account
(`grid_id` int, `acct_id` int)
;
INSERT INTO grid_account
(`grid_id`, `acct_id`)
VALUES
(2, 1),
(2, 2),
(2, 3),
(3, 2),
(3, 3),
(3, 4)
;
查詢1:
select master.name master_grid, slave.name slave_grid, acct.name account
from grid master
inner join grid slave on master.id = slave.master_id
inner join grid_account grid_acct on slave.id = grid_acct.grid_id
inner join account acct on grid_acct.acct_id = acct.id
where master.master_id = 0
| MASTER_GRID | SLAVE_GRID | ACCOUNT |
|--------------|------------|-----------|
| Super_Grid_A | Grid 1 | account A |
| Super_Grid_A | Grid 1 | account B |
| Super_Grid_A | Grid 1 | account C |
| Super_Grid_A | Grid 2 | account B |
| Super_Grid_A | Grid 2 | account C |
| Super_Grid_A | Grid 2 | account D |
我想你是在想MySQL的工作方式不正確。您應該閱讀一個名爲「關係數據庫規範化」的主題:http://en.wikipedia.org/wiki/Database_normalization
我之所以這麼說是因爲您聲明網格1將具有ABC,網格2將具有BCD,這意味着網格之間會存在重疊在BC上的1 & 2。那是對的嗎?
你很可能最終會做的事情(如果我正確理解你的問題)是創建一組相互關聯的表。
如果您只有3個級別,那麼您只需要3個表格。如果你有ň表的量,那麼你就需要一個更聰明的解決方案,也許行與回指向鍵在一個僞循環方式
例3級深度的方法的關係表:
Super_Grid Grid SubGrid
+-----+------+ +-----+-------+-----+ +-----+------+-----+
| key | grid | | key | super | grid| | key | grid | sub |
+------------+ key to super +-----+-------+-----+ key to grid +-----+------+-----+
| 1 | A | <-1-------n-<| 1 | 1 | 1 |<-1-------n-<| 1 | 1 | A |
+-----+------+ | 2 | 1 | 2 | | 2 | 1 | B |
+-----+-------+-----+ | 3 | 1 | C |
| 3 | 2 | D |
+-----+------+-----+
也許你可能想看看沒有SQL方法。就像MongoDB一樣,因爲這會讓你構建一個危境狀態比建立表更容易。這完全取決於你的最終目標是什麼。
閱讀關於關係數據庫,瞭解如何連接來自不同表格的數據。表格中沒有表格,但可以使用ID來引用不同表格中的項目。 – Shomz
我不認爲你想這樣做,Mysql會打破。也許查看JOIN表 – Tasos
MySQL中不支持嵌套表,但它們是[ORACLE數據庫]中存在的概念(http://docs.oracle.com/cd/A97630_01/appdev.920/a96624/05_colls.htm )。 http://forums.mysql.com/read.php?61,60008,161545#msg-161545表示mySQL不支持它們,但是多值屬性是。 – xQbert