Мой дизайн MySQL нарушает правила базы данных? - PullRequest
3 голосов
/ 27 июня 2011

Мне нужен совет, если я поступаю правильно в базе данных MySQL. Я подключаю эту базу данных, которую я назвал инвентарь , к java-приложению, она состоит из таблицы с именем item и вот подробности:

  1. id - int (11), AUTO_INCREMENT
  2. item_name - varchar (50)
  3. категория - варчар (25)
  4. q_box - int (11)
  5. unit_price_box - двойной
  6. sub_total_box - двойной
  7. q_pc - int (11)
  8. unit_price_pc - двойной
  9. sub_total_pc - двойной
  10. grand_total - двойной
  11. недавний_приобретенный - дата
  12. last_date_modified - отметка времени

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

Я планирую сделать это:

имя таблицы: заказы

, который состоит из следующего:

  1. order_id - int (11), AUTO_INCREMENT
  2. item_name - varchar (50)
  3. категория - варчар (25)
  4. q_box - int (11)
  5. unit_price_box - double // это розничная / оптовая цена за коробку
  6. sub_total_box - двойной
  7. q_pc - int (11)
  8. unit_price_pc - double // это розничная / оптовая цена за пк
  9. sub_total_pc - двойной
  10. grand_total - двойной
  11. customer_name - varchar (50)
  12. last_date_modified - отметка времени

    У меня вопрос: нарушаю ли я какие-либо правила MySQL, поскольку я использую ту же переменную?

или у вас есть какой-нибудь совет? Любой совет будет высоко оценен ..

Заранее спасибо:)

Ответы [ 3 ]

3 голосов
/ 27 июня 2011

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

http://www.devshed.com/c/a/MySQL/An-Introduction-to-Database-Normalization/

1 голос
/ 27 июня 2011

Вам может быть лучше с таблицей items , а также с таблицей orders и order_items .

orders

id int(11), AUTO_INCREMENT
customerid int(11)
orderdate datetime
PRIMARY KEY (id)
FOREIGN KEY (customerid) REFERENCES Customers(Id)

order_items

orderid int(11),
itemid int(11)
FOREIGN KEY (orderid) REFERENCES Orders(id)
FOREIGN KEY (itemid) REFERENCES Items(Id)

Таким образом, количество повторяющихся данных меньше.

1 голос
/ 27 июня 2011

В таблице order вы можете указать Customer_Id и сделать этот внешний ключ. Клиент должен быть там до того, как вы создадите для него Заказ.

Нет, вы не будете нарушать правила MYSQL, если используете те же переменные,

Когда вы пишете JOINS, вам необходимо использовать псевдоним, чтобы идентифицировать, а НЕ ПОНЯТЬСЯ

...