SQL Что ты думаешь лучше? Все на одном месте или отдельно

0

Какой из них лучше? И почему?

Мне всегда нужны все данные, никогда не произойдет, что мне нужно только имя, а не "tool1, tool2"...

1) Допустим, у меня есть таблица "Вудс" и "ВудДата"

Внутри "Вудса" у меня:

  • id (автоинкремент)
  • имя (название дерева)
  • когда (когда была вырублена древесина)

И другая таблица "WoodsData"

  • id (который связан с идентификатором дерева)
  • tool1 (инструмент № 1 используется для сокращения дерева, true или false)
  • tool2
  • tool3
  • tool4
  • tool5
  • раз (раз использовал инструмент)

поэтому выбор будет здесь, соединяя две таблицы!

2) Один стол "Вудс" выглядит так:

  • id (автоинкремент)
  • имя (название дерева)
  • когда (когда была вырублена древесина)
  • tool1 (инструмент № 1 используется для сокращения дерева, true или false)
  • tool2
  • tool3
  • tool4
  • tool5
  • раз (раз использовал инструмент)

ПРИМЕЧАНИЕ: "tool1, tool2, tool3, tool4, tool5" должны перейти к 50 из них, я просто не хотел писать их все здесь: P

  • 0
    Почему бы не иметь таблицу инструментов с 1-50 (также легко расширяемой), а затем таблицу поиска между инструментами и лесами в качестве woodsdata?
  • 0
    Потому что это не мой проект, я не работал над ним ... какой-то старый ублюдок, который ничего не знал ... А теперь я должен оставить это так, но я хотел посмотреть, что люди думают ... Есть ли разница между этими двумя там? Думаю, нет....
Показать ещё 4 комментария
Теги:
logic

4 ответа

7
Лучший ответ

Я бы пошел с:

Woods

  • id (автоинкремент)
  • имя (название дерева)
  • когда (когда была вырублена древесина)

Инструменты

  • id (автоинкремент)
  • имя (название инструмента)

И затем соединительная таблица, чтобы показать, какие инструменты были использованы, на которых леса

Woods_Tools

  • wood_id (внешний ключ для Woods.id)
  • tool_id (внешний ключ для Tools.id)
  • 0
    это мне ничего не помогает! Это был не мой вопрос ... Я знаю, что я мог бы сделать это так, и это было бы правильно, но моя проблема - другие 1000 проблем, поэтому я должен оставить это, как сейчас ... Единственное, что я могу изменить для сейчас в моем вопросе! Ааааа нм. ты не помог! :П
  • 0
    @FeRtoll Тогда правильный ответ на ваш вопрос: не имеет значения, делаете ли вы это так или иначе.
Показать ещё 8 комментариев
3

Оба ошибочны, вы должны нормализовать данные: "tool1" to "tool50" должен быть "инструментом" в дополнительной таблице. Прочитайте что-нибудь о нормализации.

  • 0
    это был не мой вопрос!
  • 0
    Хорошо. Но вы были бы счастливы с плохим ответом?
Показать ещё 2 комментария
2

Мой совет - положить все в одну таблицу. Таким образом, вы будете иметь только один набор данных для вставки при вводе записи.

Если у вас есть две таблицы, вам нужно будет обновить две таблицы (кластерные индексы, если они представляют собой таблицы SQL Server с первичными ключами). Это может принести дополнительные усилия.

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

Лучшее решение - попробовать в обоих направлениях и измерить результаты. Это может не иметь никакого значения в любом случае.

1

Чтобы быть более нормализованным, отделите записи "инструмент" в третьей таблице

WoodsTool:

  • id (первичный)
  • woodsdata_id (внешний ключ, относится к первичному ключу WoodsData)
  • 0
    Не хорошо :( ... Я имею в виду, что это хорошо :) хе-хе, но ... ааа, прочитайте мой комментарий под моим вопросом!
  • 0
    +1 за умный ответ, но мне не нужен совет! : P хехех лол
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню