2013-02-08 4 views
0

Спасибо, что нашли время, чтобы прочитать это и попытаться помочь мне, я очень благодарен за информацию!MYSQL - Первая структура структуры базы данных Пожалуйста,

Это мой первый раз, когда я создал свою собственную базу данных mysql, и я надеялся на некоторые указатели. Я просмотрел предыдущие вопросы и обнаружил, что можно одновременно искать несколько таблиц ... так что это расширило мои возможности.

Что я пытаюсь сделать, есть возможность поиска/фильтрации списка клубов снегоходов на странице php.

Эти клубы должны быть перечислены государством, округом или объектом поиска по названию/другой информации.

Я также хотел бы, чтобы они были в алфавитном порядке в результатах, несмотря на порядок ввода.

В настоящее время мой ум был в месте, есть стол для Нью-Йорк, штат Пенсильвания и т.д.

с колонками Каунти (VARCHAR), Clubname (VARCHAR), адрес (длинный текст), телефон (VARCHAR) по электронной почте (VARCHAR) адрес веб-сайта (VARCHAR)

Должен ли я на самом деле делать несколько таблиц для каждого округа, такие как NY.ALBANY, NY.MADISON

ли полевые форматы, которые я выбрал разумную них?

должны охватываться быть разбит на подкомпоненты ... такие как Street1, street2, город, штат, почтовый индекс

спасибо так много для любого входа вы можете предоставить

В конце концов, я думаю, что я хотел столбец «trailsopen» с да или нет, и измените фон tr на зеленый или красный на основе ввода.

Надеется, что это имеет смысл ... - Джон

+0

Вы должны, вероятно, только одна таблица и иметь состояние в качестве колонки тоже. Не стоит указывать на то, что несколько таблиц только усложнят вас в долгосрочной перспективе. – Pitchinnate

+0

Просто убедитесь, что вы хорошо используете свои индексы, и у вас не будет проблем с их участием в одной таблице. – Pitchinnate

+0

@ Pitchinnate это ужасный совет! Это похоже на то, что вы не должны использовать более одного класса на объектно-ориентированном языке, чтобы упростить его использование. Вы должны всегда делиться логически. – Magnus

ответ

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

может county_id обрабатывать несколько идентификаторов? –

+0

https://membership.nyssnowassoc.org/club/show/415 –

+0

пример одного конкретного клуба ... –

0

С моей точки зрения, кажется, 1 стола будет достаточно для ваших нужд. MySQL настолько устойчив, что существует множество способов сделать что угодно. Я рекомендую загружать и использовать MySQL Workbench, что упрощает и ускоряет создание таблиц, изменение таблиц и написание запросов, чем их внедрение на веб-странице.

Скачать MySQL Workbench ->http://dev.mysql.com/downloads/workbench/

Вы также должны многое узнать о запросах MySQL. Я думаю, вы можете поместить всю информацию, которая вам нужна в одной таблице, и трюк - это тот запрос, который вы используете для отображения информации.

Например, предположим, что у вас есть только 1 стол со всеми состояниями. Вы можете отобразить только снегоходы клубов из штата Нью-Йорка с запросом, как это:

select * from my_table where state = "NY"; 

Если вы хотите отобразить результат алфавитного по имени клуба, то вы бы использовать что-то вроде этого:

select * from my_table where state = "NY" order by clubname; 

Существует много документации онлайн. Поэтому я бы предложил провести несколько часов исследований и игры с MySQL Workbench.

Цель Stack Overflow - ответить на более конкретные вопросы, связанные с конкретным кодом или запросами.Поэтому, как только вы создали программу и что-то напутали, вы можете задать конкретный вопрос здесь. Удачи!

0

U может создать единую таблицу со сложным ключевым ограничением. Как .. У меня есть 3 отдела в компании, и у каждого есть несколько подделок sub.so, я могу создать такую ​​базу данных. Dept_id || sub_dept_id || Имя || Sal || Адрес || Телефон .. где Dept_id и sub_dept_id будут совместно представлять первичный ключ и созерцать его уникальность.

Но помните, если уры базы данных будут слишком большим, то подумайте, прежде чем у делать этот шаг, у может понадобиться нужна кластеризация или индекс для этого сценария. При написании SQL-запроса целесообразно разделить основной модуль на несколько подмодулей. Таким образом, вы можете нарушить адрес. По вашему да/нет .... использование целого Фейлд и планировать его таким образом, что, если его ДА, он будет хранить 1 еще 0 (ноль) ...

+0

Я могу сказать, что в нью-йеле есть только 243 клуба ... и некоторые из них находятся в нескольких графствах ... так что добавляет еще один слой, я думал только чтобы дублировать информацию, но я уверен, что есть более умный способ. .. –

0

Вы не должны создавать индивидуальные таблицы для отдельных округов. Вместо этого вы должны создать таблицу для состояний, таблицу для округов и таблицу для адресов.

Результат может выглядеть примерно так:

состояние (идентификатор, код, название), округа (идентификатор, stateID, имя), клуб (ID, countyID, имя, StreetAddress и т.д ...)

Процесс, используемый для определения того, что нужно разбить и когда называется «нормализация базы данных» - на самом деле существуют алгоритмы, которые делают это за вас. Страница вики на этом уровне - это хорошее место для начала: http://en.wikipedia.org/wiki/Database_normalization

Один длинный текст для адреса улицы в порядке, кстати, как и varchars для других полей.

+0

выглядит так, как вы и @pitchennate находятся на одной теме мысли здесь ..., может ли клуб иметь несколько идентификаторов округа? https://membership.nyssnowassoc.org/club/show/415 –

+0

@JohnMacKenzie Да, я просто прочитал его неправильно в оригинальном комментарии. Не мой день сегодня :). Если ваши клубы могут охватывать несколько округов, то путь к базе данных должен изменить таблицу 'club', чтобы выглядеть так:' club (id, name, streetAddress и т. Д.) 'И иметь другую таблицу' clubXcounty' или подобным вот так: 'clubXcounty (clubID, countyID)'. Затем вы можете использовать SQL JOINs в своих запросах, чтобы получить все вовлеченные округа. Вы могли бы также добавить несколько countyIDs в клубный стол вместо этого, но тогда ваши SELECT могут оказаться сложнее писать и поддерживать. – Magnus

+0

спасибо за помощь anmd input magnus, я очень благодарен :) –

0
  1. Должен ли я на самом деле делать несколько таблиц для каждого округа, такие как NY.ALBANY, NY.MADISON

Это зависит, но в вашем описанном случае альтернативой может быть иметь одну таблицу базы данных с все клубы снегоходов и один стол для всех штатов/округов. В таблице клубов вы можете иметь поле id как внешний ключ, который связывает запись с конкретной записью состояния/округа. Чтобы получить всю информацию вместе, вам просто нужно выполнить JOIN-операцию в таблицах (см. Документацию по mysql).

  1. Являются ли полевые форматы я выбрал разумные?

Они будут работать ..

  1. должны охватываться быть разбит на подкомпоненты ... такие как Street1, street2, город, штат, почтовый индекс?

По существу вопрос здесь, если вам это нужно, разбитое на подкомпоненты, либо сейчас, либо в будущем? Если он разбит, вы разделяете данные, что делает дальнейшую обработку (например, генерация последовательных букв, автоматическое обнаружение ..) потенциально проще, но это зависит от вашей обработки; если вам это не нужно, то почему жизнь осложняется?

так много ответов уже .. согласовано.

+0

спасибо за помощь :) –

Смежные вопросы