Skripta za odraditi promjene u bazi

Evo mene sa jedim php - sql problemom

Dakle imam jednu bazu podataka čija mi struktura više ne odgovara. Sada bi jedan stupac te baze izdvojio, pa iz njega napravio posebnu bazu sa jos nekim vrijednostima. Dakle imam nesto ovako

Baza1

id | naslov | autor | tekst | kategorija

E sada ovaj stupac autor bi trebalo izdvojiti i od njega napraviti sljedece

Baza2

idautora | autor | info | josnesto | nesto trece

Uglavnom nadam se da ste shvatili sto zelim reci.
Znaci trebala bi mi skripta koja će prelistati sve unose iz baza1 te autore unjeti u drugu bazu - baza2.

Nakon toga bi u Bazu1 umjesto autor trebalo upisati idautora pod kojim se nalazi u Bazi2 taj autor.

Malo jesam zakomplicirao, ali radi se o užasno puno unosa te mi je gotovo nemoguće ručno sve mjenjati.

Eto molio bih neki prijedlog, ideju, gotov kod (idealno :kuc:) kako da ovo odradim

Ja ću probati dati rješenje za MS SQL što se uz male preinake može složiti i za MySql.

Plan:

  1. Napraviti novu tablicu AUTOR gdje ćemo zapisati sve autore, ima identity polje za AUTORID
  2. Insert (distinct) svih autora u novu tablicu
  3. Kreiranje novog polja (INT) u staroj tablici
  4. Update novog polja u staroj tablici u zavisnosti od podataka u novoj tablici

CREATE TABLE AUTOR (
[AUTORID] [int] IDENTITY (1, 1) NOT NULL ,
[AUTOR] [varchar] (120) COLLATE Croatian_CI_AS NOT NULL,
… ostala polja …
)

– treba kreirati PK na tablicu AUTOR –
– ako ima puno autora možda index na polje AUTOR

INSERT INTO AUTOR (AUTOR) SELECT DISTINCT autor FROM STARATABLICA

– dodavanje novog polja u staru tablicu
ALTER TABLE STARATABLICA ADD AUTORID [int] NOT NULL CONSTRAINT [DF_STARATABLICA_AUTORID] DEFAULT (0)

– update stare tablice

UPDATE STARATABLICA
SET AUTORID = a.AUTORID
FROM STARATABLICA st, AUTOR a
WHERE st.AUTOR = a.AUTOR

Nadam se da nisam nešto sfuljio :slight_smile:

za mysql prouci malo foreign keys