|
|
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
Есть таблица товаров, есть таблица заказов, в таблице заказов хранятся идентификаторы купленных товаров. Товар удалили, в результате в таблице заказов остался идентификатор, который ссылается на несуществующий товар. По идее этот идентификатор нужно обнулять после удаления товаров, но тогда у нас не ведется статистика покупок. Как в таком случае правильно хранить товары, которые купили? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 13:40 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
JulTКак в таком случае правильно хранить товары, которые купили?Нельзя удалять товары, как же ещё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 14:12 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
JulT, Конечно товар, который хотя бы раз использован в таблице заказов, удалять нельзя. Представим такую ситуацию, что товар больше не продаётся. Не то чтобы его нет на складе, а он вообще больше не производится. Тогда в интерфейсе формирования заказа его нужно не показывать. Для этого обычно в таблице товаров делается поле Активный и при формировании заказа выбираются только активные записи. Запись о товаре не удаляется, а деактивируется. Как то так.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 14:29 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
GwaJulT, Конечно товар, который хотя бы раз использован в таблице заказов, удалять нельзя. Представим такую ситуацию, что товар больше не продаётся. Не то чтобы его нет на складе, а он вообще больше не производится. Тогда в интерфейсе формирования заказа его нужно не показывать. Для этого обычно в таблице товаров делается поле Активный и при формировании заказа выбираются только активные записи. Запись о товаре не удаляется, а деактивируется. Как то так.. то что нужно, спасибо и alexeyvg спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 20:54 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
alexeyvg, ваще-то, таблицы товаров и заказов не должны быть связаны. Заказанный товар должен копироваться в заказ. Ситуация с товаром, может быть не сосвем понятна, но посмотрите на ситуацию с ценой заказа: сделали заказ по одной цене, а через месяц изменили цену товаров... и? все старые заказы стали по новой цене? Товар, цена товара и объем заказа - это копированные данные из текущих таблиц и не должно там (в заказах) быть никаких "идентификаторов"... Заказ далее живет своей половой жизнью, никак на завися от товаров, складов, ценовой политики и т.д. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 22:03 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
JulT, Пойдите дальше, не стесняйтесь ) Представьте, что есть сущность "Товар", а есть "Товар выставлен в продажу в период...". Тогда и это наивное поле "Активный" не понадобится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 22:21 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
JulT, Просто не удалять товары, помечать, как неиспользуемые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 22:23 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
[quot Arhat109]alexeyvg, ваще-то, таблицы товаров и заказов не должны быть связаны. Заказанный товар должен копироваться в заказ. Ага, и писать на клиппере... Ситуация с товаром, может быть не сосвем понятна, но посмотрите на ситуацию с ценой заказа: сделали заказ по одной цене, а через месяц изменили цену товаров... Надо вообще-то прайс-листы вести... И вот уж что, точно должно копироваться в заказ, так это цена. В объем мысли частично правильные, но что там и как с заказами - надо выяснять, читать постановку, и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 22:33 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
Arhat109alexeyvg, ваще-то, таблицы товаров и заказов не должны быть связаны. Заказанный товар должен копироваться в заказ.Да, так тоже делают. Но со связкой удобнее. Arhat109Ситуация с товаром, может быть не сосвем понятна, но посмотрите на ситуацию с ценой заказа: сделали заказ по одной цене, а через месяц изменили цену товаров... и? все старые заказы стали по новой цене?Во первых, разумеется, все значимые для заказа параметры товара (типа каталожной цены) нужно копировать в заказ, это очевидно. Во вторых, в заказе цена товара "в заказе" хранится отдельно по любому, поскольку она может быть не равной цене товара в каталоге, так что "старые заказы" не поменяются в любом случае. Можно так же вместо копирования прайсовой цены делать версионность цены товара, но ИМХО это избыточно, да и не нужно (хотя лог изменения цены товара, да и любых других важных параметров товара необходим). Хотя тут уже могут быть разные подходы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 23:15 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
> ваще-то, таблицы товаров и заказов не должны быть связаны Никогда никому об этом не говорите. Засмеют. > Товар, цена товара и объем заказа - это копированные данные из текущих таблиц Смело можете сдавать в макулатуру все учебники, по которым вы учились. Для любой товарной сделки предмет сделки - ссылка. Просто потому, что у предмета сделки есть собственный жизненный цикл. Как факт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2013, 23:53 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
Arhat109Ситуация с товаром, может быть не сосвем понятна, но посмотрите на ситуацию с ценой заказа: сделали заказ по одной цене, а через месяц изменили цену товаров... и? все старые заказы стали по новой цене?Ох уж... эти проектировщики без сомнений и упрека... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 03:09 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
guest_20040621, можете посмеяться. Мне также смешны утверждения про "никогда не удаляются"... не умение работать с данными, туда и приводит. Впрочем как и поля "активная запись"... оттудова же. Говнокодерство, активно сменяется говнопроектированием... благо объемы и скорости вычислительных устройств позволяют. Зато потом, вопрошаем "таблица в миллион записей, поиск идет 30секунд... хотя там 80% это старое неактивное барахло, что делать?" Копирование товара в заказ - никак не мешает его жизненному циклу. Решите этот вопрос на досуге самостоятельно, плиз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 10:07 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
alexeyvg, сам товар - такое же значимое поле. Сущность Цена - просто проявляет те же самые проблемы, значительно чаще и шустрее, но сами проблемы - в точности такие же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 10:10 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
пгуые123, вот, вот... а можно пойти ещё дальше: Есть товар от поставщика1, он же от поставщика2... а поставщик3 вчерась переименовал свой товар, который заказали позавчера, но он ещё даже не поступил на склад... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 10:13 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
Arhat109, неумение работать с данными (многие программисты SQL - программистами не являются, SQL - НЕ ЯП) , приводит к тому, что "данные не удаляются никогда"... но как-то НАДО различать рабочие записи от мусора ... вот и появляется ТУПОЕ поле с признаком "Активная Запись" ... потому что, сборкой мусора, выделением памяти, и её управлением занимался на самом деле далеко не каждый. Это есстественное знание любого программиста на любом нормальном ЯП. В необходимый арсенал знаний SQL-пользователя - НЕ ВХОДИТ (и не должно в общем-то). ещё раз (писал уже ранее) SQL - пользователь <> программист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 13:27 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
guest_20040621> ваще-то, таблицы товаров и заказов не должны быть связаны Никогда никому об этом не говорите. Засмеют. ... вот тут 13510983 Вы сами советовали что-то подобное... уже засмеяли? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 13:36 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
Arhat109guest_20040621, можете посмеяться. Мне также смешны утверждения про "никогда не удаляются"... нее умение работать с данными, туда и приводит. Впрочем как и поля "активная запись"... оттудова же. Я посмеялся. Вообще, тебе на заметку: данные, однажды пропавшие в бд и использованные каким-то образом, удаляться не должны вообще. Во-первых, в этом нет смысла, во-вторых, данные нужны всегда, это требование Бл. Конечно, это не строгое правило, но часто оно действует. Говнокодерство, активно сменяется говнопроектированием... И пример его ты нам в топике привел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 13:42 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
MasterZiv, данные - они всего лишь данные. И когда они больше не нужны БЛ, их можно (иногда и нужно, и даже необходимо) удалять из БД. Другой вопрос "когда и как"... можно и логически, можно и путем добавления признака "активная запись", можно и путем переноса в архивное хранилище, можно и ... конкретное применение - сильно зависит от задачи. И, советовать всегда и везде "данные не удаляются из БД" - это и есть пример копропроекта. Да и правда, чего "париться"? Объемы хранилищ и не такое дерьмо хранить позволяют... нафига заботится о чистоте ещё на стадии проектирования?!? Это и есть говноподход, насаждаемый всё активней. От неумения работать с данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 14:24 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
Arhat109, ни Вы, ни Ваш оппонент не попали точно в истину, но Вы неизмеримо дальше от неё. Используя Ваши термины, скажу так: данные в БД (некие конкретные записи) в подавляющем большинстве случаев входят в состав других, более сложных объектов, и, соответственно, не должны удаляться (подвергаться "сборке мусора") отдельно от этих объемлющих объектов. Объемлющие объекты в свою очередь входят в чей-то состав и в итоге практически всегда попадают в очень большой объект, скажем, "данные продаж за 2012-й год". Когда и как такой объект будет удалён и позволит "почистить мусор"... зависит от бизнес-процесса, конечно, но уже давно довольно очевидно, что данные гораздо ценнее, нежели место на архивных и не очень архивных носителях. Также довольно очевидно, что бизнес-логика склонна меняться и развиваться, и может оказаться так, что данные, которые вчера удалены как ненужные, сегодня оказались нужны. В результате этого Ваша позиция начинает напоминать, например, искусство упаковки данных в битовые структуры - да, в некоторых случаях нужно и сегодня, но попытка объявить его глобально необходимым вызовет здоровый и обоснованный смех. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 14:44 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
> можно и логически, можно и путем добавления признака "активная запись" Дружище, логическое удаление - это и есть значение признака. Вы читаете то, что вам пишут? > можно и путем переноса в архивное хранилище Перемещение в архив никак не связано с логическим удалением. > советовать всегда и везде "данные не удаляются из БД" Именно так. Это рекомендация по умолчанию. Обработка других вариантов требует гораздо более высокой квалификации от разработчика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 14:50 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Флудить , троллить переходя на личности - это весь арсенал ваших аргументов, нет? Дружище, вы категорически неправильно интерпретируете то, что вам пишут. Представьте, что второклассник с видом невероятного превосходства рассказывает студенту института о преимуществах таблицы умножения. Примерьте к себе образ второклассника, аналогия достаточно точная. Я даже не знаю, как реагировать на ваши ответы. Ваши представления о проектировании реально на уровне начала массового производства компьютеров. Вы на самом деле боретесь за право оставаться невежественным. Да нет проблем, если хотите - сколько угодно. Только апломба чуть меньше - и наслаждайтесь обсуждениями с ЧАЛом и им подобными. Вам таки хочется потроллить... ок. Предварительно на следующий пост: Это из вашего поста: "Заказы - таблица, не связанная с продуктами. Отдельная таблица для связи заказа с продуктами." (по картинке автора, как раз связана)... часть вашего ответа автору на вопрос "Очень сомневаюсь что правильно..." ... я читать не умею или Вы смотреть, дружище? :) А теперь, по поводу перепалки, уважаемый "студент": 1. Моё сообщение было о копировании товара в заказ. 2. Ваш пост "о посмеяться" (как видим поперек моего поста) даже без пояснений... или лениво, или их просто нету... фиг знает. 3. Моё пояснение, основной частью которого было "не удаляем, от неумения работать с данными". 4. Ваш ответ о мировоззрении (опять же поперек поста) с вкраплениями не относящихся к вопросу деталей. Но без объяснений почто неудаляем, заметьте... 5. Мой ответ о нежелательности писать поперек... 6. и теперь Вы мне рассказываете о таблице умножения... Доучитесь в своем институте уже, и приходите - пообщаемся, уважаемый студент. P.S. Это наша с Вами третья перепалка, и она опять инициирована с вашей стороны, и опять с желанием оскорбить, без какого-либо полезного обсуждения... так кто из нас "второклассник"? :) P.P.S. Ещё раз: если нет аргументов - не надо троллить в теме. Давайте обсуждать по-существу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 14:58 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
> Отдельная таблица для связи заказа с продуктами. Был уверен, что на таком-то уровне вы имеете представление о проектировании. Вижу, что ошибался. ОК, совсем на пальцах: product () order () order_details (..., order_id, product_id, ...) Нужно разжевывать, почему это так? > опять с желанием оскорбить Дружище, я потратил лет пять на то, чтобы в этом форуме не было обсуждений про естественные ключи. Получилось. До вас я был уверен, что и обсуждений по поводу истории изменений больше не будет. Мне не интересно сто раз писать одно и то же разным людям. Хотите - ищите самостоятельно, не хотите - живите обкуренным китайским первоклассником. В последнем случае воздержитесь от комментариев и ответов на не адресованные персонально вам вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 15:14 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
softwarerArhat109, ни Вы, ни Ваш оппонент не попали точно в истину, но Вы неизмеримо дальше от неё. softwarerИспользуя Ваши термины, скажу так: данные в БД (некие конкретные записи) в подавляющем большинстве случаев входят в состав других, более сложных объектов, и, соответственно, не должны удаляться (подвергаться "сборке мусора") отдельно от этих объемлющих объектов. Объемлющие объекты в свою очередь входят в чей-то состав и в итоге практически всегда попадают в очень большой объект, скажем, "данные продаж за 2012-й год". Когда и как такой объект будет удалён и позволит "почистить мусор"... зависит от бизнес-процесса, конечно, но уже давно довольно очевидно, что данные гораздо ценнее, нежели место на архивных и не очень архивных носителях. Да,да... именно такой копроподход и активно внедряется последнее время. Его вариант реального применения: Есть списки данных, составляемые руководством для проработки сотрудниками... как правило составляются разово, как текущая задача. Требуется отчет "кому сколько назначено" (дабы грузить как положено)... решение: Делаем выборку из списков на лету суммируя и вычисляя соответствующие показатели... всё "как надо"... на практике оказывается (99% содержимого - отработанный мусор), что запрос по отчету "летает" аж по 8 минут (соединение ограничено 60сек.), сажает сервак с 4-я ядрами на 500% да так, что никто ничего из БД выбрать не может ваще ... вместо того, чтобы ещё при создании списка, делать интегральные вычисления по нему, с корректировкой "на лету" (редактирование списка)... "блин, это же сложно! А вдруг оно не так посчитает?" Смотрите ответ нашего "студента" - он верен: "это требует другой квалификации". softwarer Также довольно очевидно, что бизнес-логика склонна меняться и развиваться, и может оказаться так, что данные, которые вчера удалены как ненужные, сегодня оказались нужны. Для этого существует логическое (и физическое из рабочий части БД) удаление с переносом в "архивные структуры". Дампы, опять же никто не отменял, вроде как (на самый крайний случай)... или о них тоже уже давно забыли на передовых роспилах? softwarer В результате этого Ваша позиция начинает напоминать, например, искусство упаковки данных в битовые структуры - да, в некоторых случаях нужно и сегодня, но попытка объявить его глобально необходимым вызовет здоровый и обоснованный смех. Глобально необходимым - никто ничего не объявлял... найдёте - покажите. Пока наоборот, оппоненты тут пытаются какие-то постулаты объявить глобальными... Специально оставил без комментариев первую часть... ну и? Здоровый и обоснованный смех, в данном случае, я так понимаю вызывает желание писать правильный, компактный код вместо говнокодерства (которое УЖЕ возведено в ранг "так надо"), нет? Тогда, что смешного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 15:16 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
Если уж обсуждение идет в таком русле, замечу насколько важна концепция связи. В случае ее поддержки в СУБД, целостность поддерживается автоматически, и вопрос автора темы вообще не возник бы (перечитайте его внимательно). Связь автоматически исчезла бы при удалении товара, а значения свойств заказа, помещенных в него в результате денормализации, сохраняли бы необходимую информацию)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 15:16 |
|
||
|
Как правильно хранить данные
|
|||
|---|---|---|---|
|
#18+
[quot guest_20040621Дружище, я потратил лет пять на то, чтобы в этом форуме не было обсуждений про естественные ключи. Получилось. До вас я был уверен, что и обсуждений по поводу истории изменений больше не будет. Мне не интересно сто раз писать одно и то же разным людям. Хотите - ищите самостоятельно, не хотите - живите обкуренным китайским первоклассником. В последнем случае воздержитесь от комментариев и ответов на не адресованные персонально вам вопросы.[/quot] Дружище, потратьте ещё лет пять и доучитесь уже в своём институте, предварительно закончив школу. Прежде чем писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2013, 15:18 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38100935&tid=1541395]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 282ms |
| total: | 416ms |

| 0 / 0 |
