<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414515&amp;view=findpost&amp;p=3795278</guid>
        <pubDate>Wed, 10 Apr 2019 11:54:45 +0000</pubDate>
        <title>Нормализация до 3НФ, БД из 5 маленьких табличек</title>
        <link>https://forum.sources.ru/index.php?showtopic=414515&amp;view=findpost&amp;p=3795278</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795276'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2019-04-10T14:22:38+03:00">10.04.19, 11:22</time></span><div class='quote '>Если поле будет ENUM - это 3НФ. Если text - это нарушение. </div></div><br>
хм...интуитивно я понимаю, что надо бы ЕНУМ сделать, но, если брать офиц.треб. по 3НФ (пусть из Вики, надеюсь там точное описание): &quot;2НФ + отсутствуют транзитивные функциональные зависимости неключевых атрибутов от ключевых&quot;. Тут не написано, что строку нужно заменять на ЕНУМ :). Или этот тип кузова нарушает 1НФ или 2НФ, но вроде нет.. Может ты намекаешь на то, что тип кузова - нетривиальная зависимость, так опять вроде бы нет...<br>
не понимаю, если честно, почему ОБЯЗАТЕЛЬНО должен быть енум.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795276'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2019-04-10T11:22:38+00:00">10.04.19, 11:22</time></span><div class='quote '>А про её, сущности, самостоятельность, никто ничего не пишет? Вот будь у тебя к той роли привязано что-то, скажем, система прав (Покупатель - смотреть своё, Манагер - смотреть и править своё, смотреть остальное, Управляющий - может всё) - вот тут она бы и стала сущностью. А сейчас это ничто, словарный атрибут.</div></div><br>
я может сейчас не то напишу), но ведь у меня такая привязка на уровне клиента очень жесткая есть. Т е появляется форма аутентификации, там выбирается тип пользователя: управленец, продажник, покупщик и пароль нужно ввести. В зависимости от этого будет отображаться тот или иной интерфейс с тем или иным функционалом.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795206'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2019-04-10T04:36:59+00:00">10.04.19, 04:36</time></span><div class='quote '>запрещающее менеджеру приобретать автомобиль в этом автосалоне.</div></div><br>
еще про это хотел уточнить.<br>
а ведь в данный момент НЕТ никакой возможности запретить продавцу купить свой авто.<br>
Условно: пришел человек устраиваться на продажу машин, его управляющий взял + вбил по нему всю инфу (пусть ИД = 8 в табл. Менеджер).<br>
Он же оставил заявку на покупку и управляющий вбил по нему инфо (пусть ИД = 26 в табл. Покупатель)<br>
<br>
Как я понимаю, уникальность манагеров и покупателей достигается за счет ID, который никак не связан между собой в этих таблицах.<br>
На данный момент в этой БД это есть проблема. Выход? Делать составной ключ, с привязкой, например к номеру паспорта? или соединять Манагера и Покупатель в единую сущность, типа &quot;Person&quot;?]]></description>
        <author>FasterHarder</author>
        <category>Базы данных: SQL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414515&amp;view=findpost&amp;p=3795276</guid>
        <pubDate>Wed, 10 Apr 2019 11:22:38 +0000</pubDate>
        <title>Нормализация до 3НФ, БД из 5 маленьких табличек</title>
        <link>https://forum.sources.ru/index.php?showtopic=414515&amp;view=findpost&amp;p=3795276</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795265'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-10T08:49:36+00:00">10.04.19, 08:49</time></span><div class='quote '>одно из определений сущности такое (Сущность - это что-то такое, о чем нужно хранить информацию в базе данных)</div></div><br>
А про её, сущности, самостоятельность, никто ничего не пишет? Вот будь у тебя к той роли привязано что-то, скажем, система прав (Покупатель - смотреть своё, Манагер - смотреть и править своё, смотреть остальное, Управляющий - может всё) - вот тут она бы и стала сущностью. А сейчас это ничто, словарный атрибут.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795265'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-10T08:49:36+00:00">10.04.19, 08:49</time></span><div class='quote '>ЕСЛИ МЫ ЭТОГО НЕ СДЕЛАЕМ, разве будет нарушение 3НФ??</div></div><br>
Если поле будет ENUM - это 3НФ. Если text - это нарушение.]]></description>
        <author>Akina</author>
        <category>Базы данных: SQL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414515&amp;view=findpost&amp;p=3795265</guid>
        <pubDate>Wed, 10 Apr 2019 08:49:36 +0000</pubDate>
        <title>Нормализация до 3НФ, БД из 5 маленьких табличек</title>
        <link>https://forum.sources.ru/index.php?showtopic=414515&amp;view=findpost&amp;p=3795265</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795206'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2019-04-10T04:36:59+00:00">10.04.19, 04:36</time></span><div class='quote '>Что ещё за поле &quot;Работает?&quot;? тупо признак? тогда это поле избыточно, и признаком является NULL в значении поля &quot;Причина увольнения&quot;.</div></div><br>
точно&#33;, ведь статус работает/уволен не нужен будет уже...<br>
например, захотел управляющий посмотреть отчет по уволенным манагерам ---&#62; <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">select .... where reasonFired IS NOT NULL</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
с этим моментом все ясно и 3НФ есть.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795206'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2019-04-10T04:36:59+00:00">10.04.19, 04:36</time></span><div class='quote '>Это таблица-справочник, и я вообще не вижу оснований к тому, чтобы объявлять её сущностью.</div></div><br>
ну, я полностью с тобой согласен в этом плане. Просто я коряво ведать написал, что это сущность.<br>
но с др.стороны, одно из определений сущности такое (<em class='tag-i'><strong class='tag-b'>Сущность - это что-то такое, о чем нужно хранить информацию в базе данных</strong></em>). ну, не знаю, тут ведать в терминах тонкости всякие. Но как я понимаю, ведь все равно таблица такая нужна с паролями, как минимум.<br>
как я понял, в плане таблицы (не сущности) &quot;РОЛЬ&quot; все ок.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795206'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2019-04-10T04:36:59+00:00">10.04.19, 04:36</time></span><div class='quote '>Или вынести, или использовать ENUM. И то, и другое соответствует 3НФ.</div></div><br>
вот кстати, когда в Пэинте проектировал инфо-,даталог.модель БД, то в скобках для типа кузова сначала написала (перечисление), но потом сделал как строчку. Но это ведь не так важно пока.<br>
вот ты говоришь, что нужно вынести в отдельную таблицу типы кузовов, но, ЕСЛИ МЫ ЭТОГО НЕ СДЕЛАЕМ, разве будет нарушение 3НФ?? Где возникают транзит.зависимости от поля &quot;Тип кузова&quot; в таблице &quot;Машина&quot;? От этого поля ничего больше не зависит в этой таблице.<br>
поясни этот момент, плиз<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795206'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2019-04-10T04:36:59+00:00">10.04.19, 04:36</time></span><div class='quote '>Выделение Менеджера и Покупателя в отдельные сущности возможно лишь в случае, если существует некое не имеющее исключение положение, запрещающее менеджеру приобретать автомобиль в этом автосалоне. Если такого запрета нет, то это одна сущность &quot;Человек&quot;. Или &quot;Субъект&quot;, если автосалон не против продаж автомашин юрлицам и иным объединениям. </div></div><br>
кстати, да) я чего-то не додумал, что манагер может купить сам у себя авто). ну, запретим, конечно возможность приобретения манагерам машины в этом салоне (салон всего 1)]]></description>
        <author>FasterHarder</author>
        <category>Базы данных: SQL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414515&amp;view=findpost&amp;p=3795206</guid>
        <pubDate>Wed, 10 Apr 2019 04:36:59 +0000</pubDate>
        <title>Нормализация до 3НФ, БД из 5 маленьких табличек</title>
        <link>https://forum.sources.ru/index.php?showtopic=414515&amp;view=findpost&amp;p=3795206</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795186'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-09T19:59:16+00:00">09.04.19, 19:59</time></span><div class='quote '>там есть поле &quot;причина увольнения&quot;. Не является ли это транзитивной зависимостью от поля &quot;Работает?&quot;?</div></div><br>
Что ещё за поле &quot;Работает?&quot;? тупо признак? тогда это поле избыточно, и признаком является NULL в значении поля &quot;Причина увольнения&quot;.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795186'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-09T19:59:16+00:00">09.04.19, 19:59</time></span><div class='quote '>Стоит ли вынести инфо о типах кузовов в отдельную таблицу (справочник)? Их кол-во заранее известно и не меняется.</div></div><br>
Или вынести, или использовать ENUM. И то, и другое соответствует 3НФ.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795186'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-09T19:59:16+00:00">09.04.19, 19:59</time></span><div class='quote '>Таблица &quot;Роль&quot; стоит особняком. Она нужна для определения типа пользователя в системе. Это нормально?<br>
</div></div><br>
Это таблица-справочник, и я вообще не вижу оснований к тому, чтобы объявлять её сущностью.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414515&view=findpost&p=3795186'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2019-04-09T19:59:16+00:00">09.04.19, 19:59</time></span><div class='quote '>Сущности:</div></div><br>
Выделение Менеджера и Покупателя в отдельные сущности возможно лишь в случае, если существует некое не имеющее исключение положение, запрещающее менеджеру приобретать автомобиль в этом автосалоне. Если такого запрета нет, то это одна сущность &quot;Человек&quot;. Или &quot;Субъект&quot;, если автосалон не против продаж автомашин юрлицам и иным объединениям.]]></description>
        <author>Akina</author>
        <category>Базы данных: SQL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414515&amp;view=findpost&amp;p=3795186</guid>
        <pubDate>Tue, 09 Apr 2019 19:59:16 +0000</pubDate>
        <title>Нормализация до 3НФ, БД из 5 маленьких табличек</title>
        <link>https://forum.sources.ru/index.php?showtopic=414515&amp;view=findpost&amp;p=3795186</link>
        <description><![CDATA[FasterHarder: Всем хай&#33; Сходу к делу&#33;<br>
Нужно спроектировать БД, имитирующую автосалон, где продаются НОВЫЕ ЗАРУБЕЖНЫЕ авто.<br>
<span class='tag-u'><em class='tag-i'>Сущности:</em></span><br>
<strong class='tag-b'>Машина</strong>: Код, марка, год выпуска, фото, макс.скорость, цена, объем движка, продана?, тип кузова, код продавца<br>
<strong class='tag-b'>Менеджер</strong>: Код, фамилия, имя, отчество, дата рождения, фото, работает?, характеристика управляющего, причина увольнения<br>
<strong class='tag-b'>Покупатель</strong>: Код, фамилия, имя, отчество, дата рождения, фото, фин. баланс, пол, судим?<br>
<strong class='tag-b'>Роль</strong>: управляющий, менеджер, покупатель<br>
<strong class='tag-b'>Сделка</strong>: Код, код менеджера, код покупателя, код машины, дата сделки, отзыв покупателя<br>
<br>
По ролям.<br>
Управляющий может: принимать/уволнять манагеров, менять привязку авто-менеджер, докупать/снимать для/с продажи авто, получать любую сводную информацию (любые отчеты)<br>
Менеджер: получать отчеты только по своим сделкам, менять только свою личную карточку<br>
Покупатель: покупать новые авто, менять личную карточку, видеть только свою историю сделок<br>
<br>
Примечание: каждое авто привязано ТОЛЬКО к 1-у манагеру, либо не привязана ни к кому (т е еще не выставлена на продажу). Манагер может продавать множество авто одновременно.<br>
<br>
Схема БД:<br>
<span class="b-attach" data-size="27043" data-hits="898" data-attach-id="60400" data-attach-post-id="3795186">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3795186&amp;attach_id=60400' title='Скачать файл' target='_blank'>_______________.png</a> (, : 898)
		</span><br>
<br>
По нормализации:<br>
1НФ: вроде все ок, ключевые поля + атомарность<br>
2НФ: вроде все ок, т к нет ни одной таблицы с составным ключом<br>
3НФ: <span class="tag-color tag-color-named" data-value="red" style="color: red"><strong class='tag-b'>ВОПРОС №1&#33;</strong></span> Если посмотреть на таблицу &quot;Менеджер&quot;, то там есть поле &quot;причина увольнения&quot;. Не является ли это транзитивной зависимостью от поля &quot;Работает?&quot;? Если менеджер не уволен, то это поле я планирую держать со значением NULL. Или нужно создавать отдельную таблицу по уволенным сотрудникам, чтобы привести к 3НФ??<br>
<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red"><strong class='tag-b'>ВОПРОС №2&#33;</strong></span> Стоит ли вынести инфо о типах кузовов в отдельную таблицу (справочник)? Их кол-во заранее известно и не меняется.<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red"><strong class='tag-b'>ВОПРОС №3&#33;</strong></span> Таблица &quot;Роль&quot; стоит особняком. Она нужна для определения типа пользователя в системе. Это нормально?<br>
<br>
спс. за внимание&#33;]]></description>
        <author>FasterHarder</author>
        <category>Базы данных: SQL</category>
      </item>
	
      </channel>
      </rss>
	