Создание web-сервиса. Всё, но не сразу. Проектирование БД.

Продолжаем серию статей по созданию портала с запчастями. Сегодня мы с Вами спроектируем базу данных. Проектирование базы данных — это фундамент нашего с Вами проекта.



При проектировании Базы данных будем использовать 3 нормальную форму отношения в реляционных базах данных
В нашей базе будет 6 таблиц: User, Company, Product, Category, Attribute и Offer.
Таблицу User мы описывать не будем, так как она создаётся автоматом в Django.

Company

Так как мы планируем, что предложения по товарам будут выкладывать компании (юридические лица). Хранить данные о компании будем в таблице Company, состоящей из следующих столбцов:

  • name — название компании, тип Char(2000).
  • user — внешний ключ на таблицу User.
  • inn — ИНН компании, чтобы инициализировать компанию(будет тип char(10), потому что ИНН может начинаться на 0), уникальное значение.
  • address — адрес компании (длинный текст, тип — text, так как адрес может быть длинным).
  • phone — телефон для связи, тип — char(12), уникальное значение.
  • mail — электронная почта, тип — char(300), уникальное значение.
  • logo — в django есть такой тип как ImageField, наследуется от FileField + содержит также height и width.
  • Balance — баланс компании, в будущем планируется, что будут введены платные услуги, тип — int(11).
  • Date — дата добавления компании в базу. Тип в django DateTimeField.
  • Slug — это уникальная строка идентификатор, понятная человеку, будет использоваться autoslug.fields.AutoSlugField. Будет применяться для url. Уникальное значение.
  • Active — Число, 0 или 1, которое укажет прошла модерацию фирма или нет.

Product

Таблица, содержащие данные о товарах.

  • name — название продукта. Тип столбца Char(2000).
  • number — каталожный номер, тип столбца Char(12), уникальное значение.
  • slug — см. подобную строку в Company.
  • image — так же как и logo в Company.
  • Category — внешний ключ к таблице catregory, указывает к какой категории относится продукт.

Category

Таблица, содержащие данные о Категориях.

  • name — название категории, char(2000).
  • slug — см. подобную строку в Company.
  • image — фото категории, тип как у logo в Company.

Attribute

Таблица для атрибутов товаров.

  • key — ключ значения атрибута, тип — char(200).
  • value — значение ключа атрибута, тип — char(200).
  • product — внешний ключ на таблицу Product, чтобы привязать атрибут к Товару.

Offer

Таблица с предложениям по товарам.

  • Product — внешний ключ на таблицу Product. По какому товару предложение.
  • Company - внешний ключ на таблицу Company, Какая компания сделала предложение по товару.
  • Price — цена предложения, тип Int(6).
  • active — 0 или 1, указывает прошла ли модерацию предложение.

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

Схематично таблицы и связи выглядят вот так:

https://i.imgur.com/0GfpgN6.jpg

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

Первая часть - Вступление

Заглавное фото с сайта zametkinapolyah.ru

vox-populiбазыданныхкакэтосделанообзорразработка
25%
65
175
260.470 GOLOS
0
В избранное
Web Development
Тех, кто презирает программистов, программисты презирают сильнее, чем те, кто презирает тех программистов, которые презирают тех, кто их презирает.
175
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (1)
Сортировать по:
Сначала старые