2013-02-08 84 views
0

感謝您花時間閱讀本文並試圖幫助我,我非常感謝這些信息!MYSQL - 第一個數據庫結構請幫助

這是我第一次做我自己的mysql數據庫,我希望有一些指針。我查看了以前的問題,發現可以一次搜索多個表格......這樣就擴展了我的可能性。

我所要做的,就是有一個PHP頁面上雪地車俱樂部的搜索/過濾列表。

這些俱樂部應該是由州,縣可列或可搜索按名稱/其他包含的信息。

我也想讓他們在結果中按照字母順序排列,儘管輸入的順序是順序的。

目前我的心在的地方,已經爲紐約州,賓夕法尼亞等

的列的縣(VARCHAR),Clubname(VARCHAR),街道地址(長文本),電話(VARCHAR)電子郵件表(VARCHAR)網站地址(VARCHAR)

我應該真正爲每一個縣,如NY.ALBANY來製作多個表,NY.MADISON

是我所選擇的明智的人的字段格式?

應該解決被分解成子......如street1,STREET2,市,州,郵編

非常感謝你對任何輸入您可以提供

最後,我想我會帶有「是」或「否」的列「trailsopen」,並根據輸入將tr背景更改爲綠色或紅色。

希望這是有道理... 約翰 -

+0

你或許應該只有一個表,並有狀態欄也。不要指出,從長遠來看,擁有多個表格只會讓你自己變得更加困難。 – Pitchinnate 2013-02-08 13:55:09

+0

只要確保你使用你的索引,你就不會有任何問題,讓他們在一張桌子上。 – Pitchinnate 2013-02-08 13:56:00

+0

@Pitchinnate這是可怕的建議!這就像說你不應該在面向對象的語言中使用多個類來使它更容易。你應該總是從邏輯上分解事物。 – Magnus 2013-02-08 13:59:11

回答

1

這裏是我怎麼會設置你的數據庫:

state 
id (tinyint) //primary key auto incremented unsigned 
short (varchar(2)) // stores NY, PA 
long (varchar(20)) // Stores New York, Pennsylvania 

county 
id (int) //primary key auto incremented unsigned 
state_id (tinyint) //points to state.id 
name (varchar(50)) 

club_county 
id (int) //primary key auto incremented unsigned 
county_id (int) //points to county.id 
club_id (int) //points to club.id 

club 
id (int) //primary key auto incremented unsigned 
name (varchar(100)) 
address (varchar(100) 
city (varchar(25)) 
zip (int) 
etc... 
+0

can county_id可以處理多個ID的? – 2013-02-08 14:35:54

+0

https://membership.nyssnowassoc.org/club/show/415 – 2013-02-08 14:36:51

+0

一個特定的俱樂部的例子... – 2013-02-08 14:38:23

0

從我的角度來看,這似乎是1臺就足夠了您的需求。 MySQL非常強大,有很多方法可以處理任何事情。我建議下載並使用MySQL Workbench,它比嵌入到網頁中更容易,更快速地創建表格,更改表格和編寫查詢。

下載MySQL工作臺 - >http://dev.mysql.com/downloads/workbench/

您還需要學習很多關於MySQL的查詢。我認爲你可以把你需要的所有信息放在一張表中,訣竅是你用哪個查詢來顯示信息。

例如,假設您只有一個表,並且所有狀態都在一起。

select * from my_table where state = "NY"; 

如果你想顯示的結果通過俱樂部名稱的字母,那麼你可以使用這樣的事情:

select * from my_table where state = "NY" order by clubname; 
你可以用這樣的查詢顯示來自紐約州剛剛雪上摩托車俱樂部

網上有很多文檔。所以我建議你花上幾個小時的時間研究和使用MySQL Workbench。

堆棧溢出的目的是要回答這個問題有具體的代碼或查詢做更具體的問題。所以一旦你建立了一個程序,並且陷入困境,你可以在這裏提出具體的問題。祝你好運!

0

U可以用複合鍵約束創建一個表。喜歡.. 我在一家公司有3個部門,每個部門都有多個子部門。所以我可以創建一個這樣的數據庫.. Dept_id || sub_dept_id ||名稱|| Sal ||地址||電話 ..其中Dept_id和sub_dept_id將共同代表主鍵,並注意其獨特性。

但是,請記住如果烏拉圭回合數據庫將是太大,覺得你在做這一步之前,ü可能需要需要羣集或指數爲場景。 在編寫SQL查詢時,最好將子模塊中的主模塊劃分爲若干個子模塊。所以你可以打破地址。 按照您的是/否....使用整數費爾德並計劃它的方式,如果是,它會存儲1,否則爲0(零)...

+0

我可以說,僅紐約州就有243個俱樂部......其中一些在多個縣......這樣又增加了一層,我的想法只是爲了複製信息,但我確信有一個更聰明的方法.. .. – 2013-02-08 14:23:16

0

你不應該爲各縣制定個別表格。你應該做的是爲國家創建一個表格,一個縣表格和一個地址表格。

結果可能是這個樣子:

狀態(ID,密碼,姓名), 縣(ID,STATEID,名), 俱樂部(ID,countyID,名稱的StreetAddress,等... )

這個過程用來決定什麼時候分解什麼時候被稱爲「數據庫規範化」 - 實際上有算法可以爲你做到這一點。維基頁面是一個很好的開始:http://en.wikipedia.org/wiki/Database_normalization

街道地址的一個長文本是好的,順便說一句,其他領域的變種也是如此。

+0

看起來像你和@pitchennate在這裏一樣的想法......俱樂部可以有多個縣ID? https://membership.nyssnowassoc.org/club/show/415 – 2013-02-08 14:39:59

+0

@JohnMacKenzie是的,我剛在原評論中讀到他錯了。今天不是我的一天:)。如果你的俱樂部可以跨越多個縣,那麼數據庫方式就是將「俱樂部」表修改爲這樣的:俱樂部(id,姓名,streetAddress等等)'並且有另一個表'clubXcounty'或類似這樣的:'clubXcounty(clubID,countyID)'。然後,您可以在查詢中使用SQL JOIN來獲取所有涉及的縣。您也可以將多個縣ID添加到分會表中,但是您的SELECT可能最終難以編寫和維護。 – Magnus 2013-02-08 14:46:14

+0

感謝您的幫助anmd輸入magnus,我非常感謝:) – 2013-02-08 14:56:13

0
  1. 如果我真的可以使每個縣多個表,如NY.ALBANY,NY.MADISON

這取決於,但在你的描述的情況下,另一種可能是有一個數據庫表所有的雪地摩托俱樂部,以及所有州/縣的一張桌子。在俱樂部表中,你可以有一個ID字段作爲外鍵,將該條目鏈接到特定的州/縣條目。 爲了獲得所有的信息,你只需要在表上進行JOIN操作(請參考mysql文檔)。

  1. 我選擇了合理的字段格式嗎?

他們將工作..

  1. 應該解決被分解成子......如street1,STREET2,市,州,郵編?

基本上這裏的問題是,如果您需要將其分解爲子組件,無論是現在還是未來?如果它被分解了,你可以將數據分離出來,進一步處理(例如生成連續字母,自動查找......)可能更簡單,但這取決於你的處理過程;如果你不需要它分開爲什麼讓生活更復雜?

這麼多答案已經..一致同意。

+0

感謝您的幫助:) – 2013-02-10 03:00:31