RELATION в FoxPro и в C# | |
---|---|
GotFocus Автор Сообщений: 1191 Откуда: Из-за угла Дата регистрации: 30.11.2010 |
* Связь таблиц двумя способами в FoxPro
*----------------------------------------------- * Способ 1. Связь по индексированному полю в дочерней таблице * Имеются две таблицы CREATE CURSOR parent(kod i) CREATE CURSOR child(kod i,name c(50)) * сначала индексируем child SELECT child INDEX ON kod TO idx * затем устанавливаем RELATION с parent на child SELECT parent SET RELATION TO kod INTO child * *----------------------------------------------- * Способ 2. Связь по RECNO() в дочерней таблице. Экономичный и возможно более скоростной. * Устраняет избыточность первого способа. * Та же суть, только связь будет не как выше по child.kod, а по child->RECNO() * Имеются две таблицы CREATE CURSOR parent(kod i) CREATE CURSOR child(name c(50)) && Поле kod отсутствует ! * Индексировать child не нужно ! SELECT parent SET RELATION TO kod INTO child В С# первый способ обеспечит DataSet для двух DataTable. A возможна ли там реализация второго способа ? |
Re: RELATION в FoxPro и в C# | |
---|---|
Рома Сообщений: 1079 Дата регистрации: 06.06.2001 |
Если твой child реализует интерфейс IList - то у него есть доступ по индексу - чем не recno()? Исходя из того, что ты описал в вопросе - получится только абстрактный пример:
|
Re: RELATION в FoxPro и в C# | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
за "второй способ" нужно руки автору отрывать. Кроме того, датасет идеологически существенно отличается от фоксовых таблиц, неважно связанных или нет. Писать на дотнете используя фоксовые привычки по меньшей мере неразумно.
------------------ WBR, Igor |
Re: RELATION в FoxPro и в C# | |
---|---|
GotFocus Автор Сообщений: 1191 Откуда: Из-за угла Дата регистрации: 30.11.2010 |
Роме спасибо за пример.
Igor Korolyov, прошу Вас пояснить, чем Вам не нравится второй способ. Я его 15 лет использую и считаю предпочтительным - то же самое,что и первый, а дочерняя таблица меньше по размеру. И индекс не нужен. Исправлено 2 раз(а). Последнее : GotFocus, 12.12.10 19:03 |
Re: RELATION в FoxPro и в C# | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
для языка программирования низкого уровня (типа Си) и для манипулирования массивами (как в примере Романа) это нормально. Для любой реляционной СУБД это по меньшей мере неадекватно (противоречит самой сущности и основам реляционной модели). "номер записи" это особенность физической реализации СУБД, при том во многих СУБД её либо нет вовсе, либо она является непостоянной (в том же фоксе номер записи вполне себе меняется при упаковке таблицы).
------------------ WBR, Igor |
Re: RELATION в FoxPro и в C# | |
---|---|
GotFocus Автор Сообщений: 1191 Откуда: Из-за угла Дата регистрации: 30.11.2010 |
1.Упаковка таблицы(имеется ввиду PACK) самопроизвольно не происходит,
а вызывать её разумеется, нельзя. 2. Поле kod в примере, содержит числа. Зачем использовать эти числа, когда можно использовать вместо этих чисел номера записей. Сколько сейчас лишних байтов в таблицах .dbf, организованных по первому способу программистами, непонятно зачем строго придерживавшихся сущности и основ реляционной модели. 3. Да, меня интересуют вопросы физической реализации СУБД. Вы хотели, что бы ознакомившись с основами реляционной модели, я не использовал более оптимальный путь? |
Re: RELATION в FoxPro и в C# | |
---|---|
Serj Сообщений: 335 Откуда: Новосибирск Дата регистрации: 12.07.2005 |
Понимаете, можно выражаться по русски, а можно на "падонкафском" сленге.
Можно программировать, применяя общепринятые правила, а можно изобретать свои. В первом случае вашу систему смогут поддерживать другие программисты, а вот во втором она окажется несопровождаемой. Если ваша задача сделать себя незаменимым программистом, применительно к своей программе, то тогда вы на правильном пути |
Re: RELATION в FoxPro и в C# | |
---|---|
GotFocus Автор Сообщений: 1191 Откуда: Из-за угла Дата регистрации: 30.11.2010 |
1. Вы, а может быть многие другие, возможно, не знали о существовании данного правила.
И не я его ввёл, а его предоставил FoxPro.Я имею ввиду второй способ. И он не так труден для понимания, что бы его не смогли поддерживать другие программисты. Вас никто не заставляет использовать этот способ. Я же никогда не уйду от оптимальности к общепринятости. 2. Замечу, что дискуссия отходит от темы. Мой вопрос касался C#. Исправлено 2 раз(а). Последнее : GotFocus, 13.12.10 13:05 |
Re: RELATION в FoxPro и в C# | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Каждый волен надевать штаны через голову, при том другие вполне себе могут либо посмеяться над "оригиналом", либо из сочувствия помочь ему. Если же он упорствует в своих заблуждениях - ну что-ж, остаётся только умыть руки...
------------------ WBR, Igor |
Re: RELATION в FoxPro и в C# | |
---|---|
GotFocus Автор Сообщений: 1191 Откуда: Из-за угла Дата регистрации: 30.11.2010 |
Сказанное Igor Korolyov`ым - не по теме. Отвечать не буду.
|
Re: RELATION в FoxPro и в C# | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Вы строите просто связь для отображения данных или же Вы таким образом пытаетесь создать правила ссылочной целостности БД? Если первое, то можно применить такой приём при определенных условиях (хотя как ребята уже сказали он не правильный) Если второе, то в фоксе можно такое реализовать, а вот в других СУБД такой фокус может уже не пройти. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: RELATION в FoxPro и в C# | |
---|---|
GotFocus Автор Сообщений: 1191 Откуда: Из-за угла Дата регистрации: 30.11.2010 |
Вот такой приём уже 15 лет успешно применяется мною, опровергая слова ребят
о его неправильности. Критерий истины - практика. А вот что в других СУБД такой фокус может уже не пройти - это по теме. Принимаю к сведению. |
Re: RELATION в FoxPro и в C# | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Дело в том, что как только надо будет упаковать таблицу (либо будет достигнут предел в 2Г, либо повысить селективность индекса, итп... видать Вы ещё этих границ не достигли), то сразу ссылочная целостность отвалится,... те решать проблему с первичным и внешним ключем всё равно придётся - это только вопрос времени. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: RELATION в FoxPro и в C# | |
---|---|
GotFocus Автор Сообщений: 1191 Откуда: Из-за угла Дата регистрации: 30.11.2010 |
Повторюсь
Цитата:Новые записи пишутся на место удалённых, а если таких нет, добавляются новые SET DELETED OFF LOCATE ALL FOR DELETED() IF FOUND() REPLACE..... ELSE INSERT..... ENDIF SET DELETED ON Случай с > 2 Гб не рассматривал. Если надо, займусь вечером. |
Re: RELATION в FoxPro и в C# | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Хорошо, у меня вопрос: каким образом Вы добиваетесь ссылочной целостности БД, те с помощью каких средств? ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: RELATION в FoxPro и в C# | |
---|---|
ssa Сообщений: 12999 Откуда: Москва Дата регистрации: 23.03.2005 |
Паш, ну что тут непонятного? С помощью своей памяти о том, что Pack делать нельзя.
------------------ Лень - это неосознанная мудрость. |
Re: RELATION в FoxPro и в C# | |
---|---|
GotFocus Автор Сообщений: 1191 Откуда: Из-за угла Дата регистрации: 30.11.2010 |
Пожалуйста, поконкретней о предполагаемых моментах нарушения ссылочной целостности.
У меня не было нарушений ссылочной целостности, наверно что-то я предпринимал, а что, так сразу не вспомню. Скажите, чего Вы опасаетесь в конкретном примере. |
Re: RELATION в FoxPro и в C# | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Серёж, подожди, дай выяснить.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: RELATION в FoxPro и в C# | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Например, у Вас есть документ (Накладная) она состоит из шапки (кому накладная) и содержания (что по ней отпустили, товар1/товар2/товар3), те есть две таблицы Шапка и Детали. Теперь Вам надо удалить накладную (ну ошибся оператор), значит надо удалить одновременно и Шапку и Детали, если удалить Шапку, то останутся "подвисшие" Детали, вопрос мой заключался в том, как Вы удаляете данный документ и какой механизм используется, что бы было нельзя удалить Шапку без удаления Деталей? ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: RELATION в FoxPro и в C# | |
---|---|
GotFocus Автор Сообщений: 1191 Откуда: Из-за угла Дата регистрации: 30.11.2010 |
|
© 2000-2024 Fox Club  |