Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Одна таблица много полей или много таблиц и мало полей
 
 автор: Sergeous   (03.06.2010 в 03:10)   письмо автору
 
 

Что лучше, правильней, быстрей, удобней и т. д. (интересует со всех точек зрений)

1

Таблица - users
Поля - id, login, password, date, fizika, skill_sila, skill_skorost, skill_uroven и т. д. около 20 полей с приставкой skill


2

Таблица - users
Поля - id, login, password, date, fizika

Таблица - skill
Поля - users_id, skill_sila, skill_skorost, skill_uroven и т. д. около 20 полей с приставкой skill

?

  Ответить  
 
 автор: Valick   (03.06.2010 в 07:52)   письмо автору
 
   для: Sergeous   (03.06.2010 в 03:10)
 

Для начала не плохо бы описать задачу, но на мой взгляд оба варианта " ни в буфет, ни в красную армию"

  Ответить  
 
 автор: Sergeous   (03.06.2010 в 13:37)   письмо автору
 
   для: Valick   (03.06.2010 в 07:52)
 

Задача простая. Онлайн игра. Пользователи регистрируется и тренирует свои скиллы.

  Ответить  
 
 автор: Valick   (03.06.2010 в 14:28)   письмо автору
 
   для: Sergeous   (03.06.2010 в 13:37)
 

Задача простая
вообще то по идее нужно написать ноу комментс...
1) в таблице с регистрационными данными не должно быть никакой физики.
2) у Вас будет не одна и даже не две таблицы, счет пойдет на десятки.

  Ответить  
 
 автор: Sergeous   (03.06.2010 в 20:16)   письмо автору
 
   для: Valick   (03.06.2010 в 14:28)
 

а зачем тут десятки таблиц?

  Ответить  
 
 автор: Valick   (03.06.2010 в 14:28)   письмо автору
 
   для: Sergeous   (03.06.2010 в 13:37)
 

-

  Ответить  
 
 автор: Axxil   (03.06.2010 в 14:27)   письмо автору
 
   для: Sergeous   (03.06.2010 в 03:10)
 

Я думаю, нет никакого смысла выделять вторую таблицу.

Просто нужно навесить индексы (я так понимаю skill будет целочисленным) и при выборках явно указывать те поля которые нужны в каждом конкретном случае (не использовать *). Тогда будет шустро работать.

  Ответить  
 
 автор: HaJIuBauKa   (04.06.2010 в 10:12)   письмо автору
 
   для: Sergeous   (03.06.2010 в 03:10)
 

второй вариант однозначно.
Приставку skill - можно убрать.

Почему вам сказали про 20 таблиц - потому что у вас наверное будет не только skill, но и другие объекты в игре, связанные с пользователем.

  Ответить  
 
 автор: Valick   (04.06.2010 в 10:59)   письмо автору
 
   для: HaJIuBauKa   (04.06.2010 в 10:12)
 

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

  Ответить  
 
 автор: Axxil   (04.06.2010 в 12:24)   письмо автору
 
   для: HaJIuBauKa   (04.06.2010 в 10:12)
 

Если с точки зоения нормализации подходить к вопросу, то, помимо таблицы с пользователями, нужно сделать ещё 2 таблицы:

1. таблицу справочник

skill_id | skill_name

2. Таблицу связи пользователей с этим справочником

user_id | skill_id | skill_value


Теперь всё канонически, только с точки зрения скорости будет работать медленнее в выборках из-за неизбежного объединения таблиц (можно правда объединение заменить несколькими запросами, может дать выигрыш, особенно на больших массивах).

Поэтому, если число skill-ов фиксированное и не будет слишком часто меняться, то можно плюнуть на нормализацию и сделать одну таблицу.

P.S. А тупо выделять n-ое число полей одной таблицы в отдельную - занятие бессмысленное

  Ответить  
 
 автор: Valick   (04.06.2010 в 13:14)   письмо автору
 
   для: Axxil   (04.06.2010 в 12:24)
 

Сам ты ёлка :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования