Моделирование направляющих: преобразование HABTM к has_many: через

Из Учебного руководства по Java Sun:

, Почему Использование Вложенные Классы? Существует несколько неопровержимых доводов использования вложенных классов среди них:

  • Это - способ логически группирующихся классов, которые только используются в одном месте.
  • Это увеличивает инкапсуляцию.
  • Вложенные классы могут привести к большему количеству читаемого и удобного в сопровождении кода.

Логическая группировка classes—, Если класс полезен только для еще одного класса, то логично встроить его в тот класс и держать два вместе. Вложение такие "классы помощника" делает их пакет более оптимизированным.

Увеличенные encapsulation— Рассматривают два класса верхнего уровня, A и B, где B нужен доступ к членам, который был бы иначе объявлен частный. Путем сокрытия класса B в классе A члены A могут быть объявлены частные, и B может получить доступ к ним. Кроме того, B самостоятельно может быть скрыт от внешнего мира. < - Это не относится к реализации C# вложенных классов, это только относится к Java.

[еще 118] читаемый, удобный в сопровождении code— Вложенные маленькие классы в классах верхнего уровня помещает код ближе туда, где это используется.

5
задан OMG Ponies 12 May 2011 в 05:22
поделиться

3 ответа

Вам нужно создать новый столбец, заполнить его значениями PK, а затем создать PK в новом столбце, например:

SQL> create table no_pk_tab (c1 varchar2(10), c2 varchar2(10))
Table created.
SQL> insert into no_pk_tab values ('one', 'one')
1 row created.
SQL> insert into no_pk_tab values ('two', 'two')
1 row created.

SQL> alter table no_pk_tab add (id integer)
Table altered.

SQL> create sequence no_pk_seq
start with 1
increment by 1
Sequence created.

SQL> update no_pk_tab set id = no_pk_seq.nextval
2 rows updated.
SQL> select * from no_pk

C1         C2             PK_COL
---------- ---------- ----------
one        one                 1
two        two                 2

2 rows selected.

SQL> alter table no_pk add primary key (pk_col) using index
Table altered.

В зависимости от того, сколько строк в вашей таблице, может потребоваться некоторое время для заполнения значений последовательности, но это будет работать.

3
ответ дан 13 December 2019 в 19:29
поделиться

Я использую SQL Developer при администрировании базы данных Oracle. Просто создайте столбец и добавьте ограничение в базу данных, например:

sql> alter table Employee add constraint Employee_pk primary key(Employee_ID);

Возможно, см. здесь для получения более подробной информации.

Редактировать:

Теперь, когда я переосмыслил это, вы сможете сделать это при миграции

add_column :table, :id, :primary_key

Затем вам нужно ввести некоторые данные внутри миграции. Просто код Ruby, который выполняет итерацию и добавляет ваш index. См. seed_fu и db-populate для получения помощи. Rails 3 позволит вам заполнять данные с помощью rake db: seed.

7
ответ дан 13 December 2019 в 19:29
поделиться

Используйте alter table для добавления столбца pk.

Напишите сценарий для установки новых значений столбца pk с приращением (своего рода цикл).

После того, как сценарий будет готов, снова используйте команду alter table, чтобы установить для столбца значение primary_key и автоинкремент, установка начального значения приращения на table_size + 1.

1
ответ дан 13 December 2019 в 19:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: