|
Ответ на сообщение Помогите с задачкой ;) пользователя AKIRO2
Ответ на сообщение Помогите с задачкой ;) пользователя AKIRO2
Ответ на сообщение Re: Помогите с задачкой ;) пользователя KSergey
Ответ на сообщение Re: Помогите с задачкой ;) пользователя IEEE
Ответ на сообщение Re: Помогите с задачкой ;) пользователя AKIRO2
Ответ на сообщение Помогите с задачкой ;) пользователя AKIRO2
Ответ на сообщение Re: Помогите с задачкой ;) пользователя AKIRO2
- вы предлагаете на две таблицы клиентов разделить: "Живые" и "Мертвые"?Сделайте нормализацию БД, т.е. реквезиты клиента в одной таблице, дата по оплате, в другой, связь по коду.
клиент сегодня действующий, завтра нет, через месяц снова действующий...
а может атрибут прицеплять к ФИО? если дата.оплата <=30, то - "живой" клиент, нет - "умер".А может завести еще одну таблицу, куда складывать записи дат с кодом у которых 30 дней истекло и раз в сутки скриптом туда загонять данные из таблицы живых ? Тогда выборка будет максимально быстрой.
Knowledge itself is a power (F.Bacon)
Ответ на сообщение Re: Помогите с задачкой ;) пользователя Mozepiy
Сделайте нормализацию БД, т.е. реквезиты клиента в одной таблице, дата по оплате, в другой, связь по коду.Интересно, как это поможет в данной задаче? да и что тут ненормализировано на ваш взгляд? (ну вот буквально в указанной постановке)?
А может завести еще одну таблицу, куда складывать записи дат с кодом у которых 30 дней истекло и раз в сутки скриптом туда загонять данные из таблицы живых ? Тогда выборка будет максимально быстрой.И быть завязанным на стабильность работы скрипта, т.е. некой обертки.
Ответ на сообщение Re: Помогите с задачкой ;) пользователя AKIRO2
а может атрибут прицеплять к ФИО? если дата.оплата <=30, то - "живой" клиент, нет - "умер".Оплат-то несколько, надо выбирать последнюю по времени.
Задача: максимально быструю выборку сделать.Вы что же, каждые 5 минут будете такие запросы выполнять??
Ответ на сообщение Помогите с задачкой ;) пользователя KSergey
Интересно, как это поможет в данной задаче? да и что тут ненормализировано на ваш взгляд?Почитайте для начала про нормализацию реляционных БД. Тогда, возможно, вопросы отпадут сами собой.
И быть завязанным на стабильность работы скрипта, т.е. некой обертки.Точно также, как от ввода данных об оплате, блокирующие работу клиента при неоплате etc...
Задача вполне решается одним запросом.А если строк не десять тыщь, а десять миллионов, да причем в ненормализованной базе, время выборки будет караул просто.
Тем более, что клиент вполне может и "ожить", значит надо из списка "мертвых" его удалять не забыть.В нормализованной базе, какраз, ничего удалять ненужно, будем иметь полную историю, и актуальность текущих клиентов.
Knowledge itself is a power (F.Bacon)
Ответ на сообщение Re: Помогите с задачкой ;) пользователя Mozepiy
Почитайте для начала про нормализацию реляционных БД. Тогда, возможно, вопросы отпадут сами собой.Еще раз: напишите где в данной постановке отсутствие нормализации.
В нормализованной базе, какраз, ничего удалять ненужно, будем иметь полную историю, и актуальность текущих клиентов.Отсюда поподробнее, пожалуйста. Что за такая структура должна для этого быть? я что-то пропустил, вероятно, в ваших ответах.
Ответ на сообщение Re: Помогите с задачкой ;) пользователя KSergey
Еще раз: напишите где в данной постановке отсутствие нормализации.Автор в первом посте писал:
При каждой оплате, автоматически, в базу данных заносится НОВАЯ строчка, которая включает в себя, ФИО Клиента и дату.Данная БД есть ненормализованная, т.к. ФИО клиента будет с некоей переодичностью повотрятся, для номализации, как я уже предлагал выше, нужно в БД создать 2 таблицы, 1-я - реквезиты клиента, 2-я - дата оплаты.
Посылать не надо. Нечего ответить - так и скажите.Какраз таки надо, многих вопросов у вас невозниклобы, знай вы хотябы азы теории. Из ваших постов я вижу, что теорию вы незнаете вообще, и через это вести конструктивный диалог, крайне затруднительно.
Отсюда поподробнее, пожалуйста.Да кудауж подробней. Имеем 3 таблицы. 1-я ФИО, 2-я у кого срок после оплаты непревышет 30 дней, 3-я у кого срок оплаты превысел 30 дней.
Knowledge itself is a power (F.Bacon)
Ответ на сообщение Re: Помогите с задачкой ;) пользователя Mozepiy
Данная БД есть ненормализованная, т.к. ФИО клиента будет с некоей переодичностью повотрятся, для номализации, как я уже предлагал выше, нужно в БД создать 2 таблицы, 1-я - реквезиты клиента, 2-я - дата оплаты.Т.е. повторяющийся ID вы не считаете деноормальзацией, а ФИО (нигде не написано, что это несколько полей) - считаете? удивительно.
Да кудауж подробней. Имеем 3 таблицы. 1-я ФИО, 2-я у кого срок после оплаты непревышет 30 дней, 3-я у кого срок оплаты превысел 30 дней.У вас удивительное представление о нормализации данных и структуре таблиц. Мне действительно до вашей теоретической подкованности как до луны.
Для истории платежей, ели требуется, работает с первой и третьей таблицами.
Для выборки всех клиентов с отключенной услугой, достаточно выбрать всех из первой таблицы, невошедших во вторую.Только честно: вы про JOIN таблицы с самой собой в курсе?
Ответ на сообщение Re: Помогите с задачкой ;) пользователя KSergey
Т.е. повторяющийся ID вы не считаете деноормальзациейПосле этой фразы, продолжать с вами дискуссию, считаю, бессмысленно.
Knowledge itself is a power (F.Bacon)
Ответ на сообщение Re: Помогите с задачкой ;) пользователя Mozepiy
Ответ на сообщение Re: Помогите с задачкой ;) пользователя KSergey
Я рад, что вы поняли некорректность ваших суждений.Я понял, что вы так и неудосужились ознакомится с теорией, раз так, то и продолжать бессмысленно.
Knowledge itself is a power (F.Bacon)
Ответ на сообщение Re: Помогите с задачкой ;) пользователя Mozepiy
Ответ на сообщение Re: Помогите с задачкой ;) пользователя KSergey
Knowledge itself is a power (F.Bacon)
Ответ на сообщение Re: Помогите с задачкой ;) пользователя Mozepiy
Ответ на сообщение Re: Помогите с задачкой ;) пользователя KSergey
Ответ на сообщение Re: Помогите с задачкой ;) пользователя AKIRO2
а если клиент предоплату внес за 3 месяца?А если за 5? а за 12?
таблица ФИО привязывается с таблицей оплаты - тогда нет повторов ФИО клиентовИ что? есть повторы ID клиентов.
тогда нужно наверно ввести не 30 дней, а "срок жизни" клиента, например: 90 днейЯ бы назвал это "количество оплаченных дней". Ибо клиент как таковой по истечении их не умирает, хоть сервис ему и перестают предлставлять.
Ответ на сообщение Re: Помогите с задачкой ;) пользователя KSergey
таблица ФИО привязывается с таблицей оплаты - тогда нет повторов ФИО клиентовID могут (и должны) повторяться.
И что? есть повторы ID клиентов.
Ответ на сообщение Re: Помогите с задачкой ;) пользователя Anomander
Уникальное ФИО на первый взгляд сойдет за ID. А на второй - я бы дал по рукам, кто так делает. Разведутся разные "Сергей Иванов", "Иванов Сергей" и "Иванов Сергей Иванович".Вы первый топик перечитайте.
Ответ на сообщение Re: Помогите с задачкой ;) пользователя KSergey
Вы первый топик перечитайте.Если вопрос сугубо академический, то вы правы, уважаемый коллега.
В условиях задачи было "поле ФИО", а вопрос сформулирован "как сделать выборку", а не как реорганизовать структуру БД.
Ответ на сообщение Помогите с задачкой ;) пользователя AKIRO2
Ответ на сообщение Помогите с задачкой ;) пользователя AKIRO2