In attachment, you will find my proposition for MARC version. don't hesitate to do any remarks. RTF version and OpenOffice.org original version -- Paul {\rtf1\ansi\deff0\adeflang1025 {\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman{\*\falt Thorndale};}{\f1\froman\fprq2\fcharset0 Times New Roman{\*\falt Thorndale};}{\f2\fswiss\fprq2\fcharset0 Arial{\*\falt Albany};}{\f3\fnil\fprq1\fcharset0 Courier New;}{\f4\fnil\fprq0\fcharset2 StarSymbol;}{\f5\fnil\fprq2\fcharset0 Times New Roman;}{\f6\fnil\fprq2\fcharset1 Times New Roman;}{\f7\fnil\fprq2\fcharset0 HG Mincho Light J;}{\f8\fnil\fprq2\fcharset0 Arial Unicode MS;}} {\colortbl;\red0\green0\blue0;\red255\green0\blue0;\red128\green128\blue128;} {\stylesheet{\s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\snext1 Standard;} {\s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\sbasedon1\snext2 Corps de texte;} {\s3\li567\ri0\fi0\sb240\sa120\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ltrch\dbch\afs28\langfe255\loch\f2\fs28\lang1033\sbasedon1\snext2 Titre;} {\s4\li0\ri0\fi0\sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs32\lang255\ab\ltrch\dbch\afs32\langfe255\ab\loch\f2\fs32\lang1033\b\sbasedon3\snext2{\*\soutlvl0} Titre 1;} {\s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b\sbasedon3\snext2{\*\soutlvl1} Titre 2;} {\s6\li567\ri0\fi0\sb240\sa120\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ab\ltrch\dbch\afs28\langfe255\ab\loch\f2\fs28\lang1033\b\sbasedon3\snext2{\*\soutlvl2} Titre 3;} {\*\cs8\cf1\rtlch\af4\afs18\lang255\ltrch\dbch\af4\afs18\langfe255\loch\f4\fs18\lang1033 Puces;} }{\*\listtable{\list\listtemplateid1 {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551} {\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid1} {\list\listtemplateid2 {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551} {\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid2} {\list\listtemplateid3 {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551} {\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid3} {\list\listtemplateid4 {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551} {\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid4} {\list\listtemplateid5 {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551} {\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid5} {\list\listtemplateid6 {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551} {\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid6} {\list\listtemplateid7 {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268} {\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551} {\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid7} }{\listoverridetable{\listoverride\listid1\listoverridecount0\ls0}{\listoverride\listid2\listoverridecount0\ls1}{\listoverride\listid3\listoverridecount0\ls2}{\listoverride\listid4\listoverridecount0\ls3}{\listoverride\listid5\listoverridecount0\ls4}{\listoverride\listid6\listoverridecount0\ls5}{\listoverride\listid7\listoverridecount0\ls6}} {\info{\author Paul POULAIN}{\creatim\yr2002\mo4\dy29\hr12\min51}{\operator Paul POULAIN}{\revtim\yr2002\mo5\dy8\hr12\min32}{\printim\yr1601\mo1\dy1\hr0\min0}{\comment StarWriter}{\vern6410}}\deftab1250 {\*\pgdsctbl {\pgdsc0\pgdscuse195\pgwsxn11905\pghsxn16837\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}} \paperh16837\paperw11905\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgwsxn11905\pghsxn16837\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc \pard\plain \s3\li567\ri0\fi0\sb240\sa120\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ltrch\dbch\afs28\langfe255\loch\f2\fs28\lang1033\qc {\ltrch\loch\f2 Koha} \par {\ltrch\loch\f2 Walk trough to MARC } \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 \par {\ltrch\loch\f5 This document is intended to present :} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls6\ltrch\loch\f5 {\ltrch\loch\f5 what is MARC} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls6\ltrch\loch\f5 {\ltrch\loch\f5 koha MARC-DB structure} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls6\ltrch\loch\f5 {\ltrch\loch\f5 MARC operation into koha} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls6\ltrch\loch\f5 {\ltrch\loch\f5 Walk trough from the 1.1 version to the MARC version} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\cf2\qc\ltrch\loch\f5 {\ltrch\loch\f5 IMPORTANT NOTE : this document speaks of the UNIMARC format (for UNIfied MARC). If there are differences with MARC21/USMARC or any other MARC standard, please let me know.} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 This document doesn't speak of authority datas. It will be completed as soon as possible ;-)} \par \pard\plain \sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs32\b\fs32\b\fs32\b \s4\li0\ri0\fi0\sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs32\lang255\ab\ltrch\dbch\afs32\langfe255\ab\loch\f2\fs32\lang1033\b {\ltrch\loch\f2 What is MARC} \par \pard\plain \s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 MARC is a standard created for cataloging books or others documents used in a library.} \par {\ltrch\loch\f0 The MARC format is quite simple :} \par {\ltrch\loch\f0 a MARC record is composed of any number of lines, all divided in 3 parts :} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\sa120\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls5 {\ltrch\loch\f0 The tag, 3 numeric digits. There are 999 different tags.} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\sa120\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls5 {\ltrch\loch\f0 The Indicator 2 digits. If any digit not present, it's replaced by # (blank space)} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\sa120\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls5 {\ltrch\loch\f0 The \ldblquote subfield\rdblquote : the subfield is the data container. A line may contain any number of subfields, depending on the label number. A subfield is composed of a $, a letter, then the data.} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 When represented in a document, the common use is to add spaces between tag, Indicator and subfields, and inside subfields. This space is only here for ease. It's not present in the true file.} \par \par {\ltrch\loch\f5 Note an information (tag or subfield) may be Mandatory or not, and may be repeatable or not. For example, the 200 tag is mandatory and not repeatable (book title). In the 200 tag, the $a subfield is not mandatory and repeatable (title)} \par \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Sample :} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 200 1# $a Je craque $b Text imprim\'e9 $f Guy Bedos} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1250\ri0\fi0\ltrch\loch\f5 {\ltrch\loch\f5 200 : title zone} \par {\ltrch\loch\f5 1# : the 1 mean this title is meaningful } \par {\ltrch\loch\f5 $a : subfield title} \par {\ltrch\loch\f5 $b : support} \par {\ltrch\loch\f5 $f : main author} \par \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Tag categories :} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 Tag are ordered in a logical way :} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 0XX (from 001 to 099) : legal information : biblio identifier, international number (ISBN or ISMN for music), legal publication, editor number...} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 1XX : coded informations : language, editor country, type of document, physical presentation...} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 2XX : document description : title, author...} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 3XX : notes} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 4XX : links with other notices} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 5XX : associated titles. It describes other titles used for this documents (original title, translation, old title when a book is re-edited with another title...)} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 6XX : Indexes} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 7XX : responsibilities} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 8XX : international informations} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 9XX : local datas : those informations are not mandatory and may be specific to an agency.} \par \pard\plain \sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs32\b\fs32\b\fs32\b \s4\li0\ri0\fi0\sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs32\lang255\ab\ltrch\dbch\afs32\langfe255\ab\loch\f2\fs32\lang1033\b {\ltrch\loch\f2 koha MARC-DB structure} \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Fast access} \par \pard\plain \s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\b {\ltrch\loch\f0 a MARC record can have a LOT of details. Most of them are useful only once a year or less. And most will never be useful for an OPAC user. That's why we must keep data in 2 parts : a MARC-DB and a non-MARC-DB. The non-MARC-DB can be the 1.1.2 (or a derivat ive).} \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Resource_table} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ul\ltrch\loch\f5 {\ltrch\loch\f5 To Steve :} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033{\ltrch\loch\f5{\f5 In you DB structure, I don't understand what the resource table is done for : it seems it's useless : Your code doesn't use date_added,date_modified, and }resource_id is always equal to record_id.} \par \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 I propose we drop this table and use Bib_Table as entry table.} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f3\fs18 {\ltrch\loch\f3 $sth=$dbh->prepare("insert into Resource_Table (Record_ID) values (0)");} \par {\ltrch\loch\f3 $sth->execute;} \par {\ltrch\loch\f3 my $Resource_ID=$dbh->\{'mysql_insertid'\};} \par {\ltrch\loch\f3 my $Record_ID=$Resource_ID;} \par {\ltrch\loch\f3 $sth=$dbh->prepare("update Resource_Table set Record_ID=$Record_ID where Resource_ID=$Resource_ID");} \par {\ltrch\loch\f3 $sth->execute;} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 \par {\ltrch\loch\f0 So I propose to drop this table.} \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Bib_Table} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 The Bib_Table is the entry table for all biblio. It describes, for a biblio, if a Tag NXX (N going from 0 to 9) exists. If yes, the NXX_Tag_Table stores the exacts tags.} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ul\ltrch\loch\f5 {\ltrch\loch\f5 Fields :} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Bib_code} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Date_created} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Date modified} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Origin_code : this code is used to store the differents origins from the biblio records. It might be useful in the case of exchanges between libraries.} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ul\ltrch\loch\f5 {\ltrch\loch\f5 To Steve : } \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 2 questions : } \par {\ltrch\loch\f5 QUESTION 1 :} \par {\ltrch\loch\f5 I don't understand the interest to have a different int for each N Tag. It is more convenient to use the Bib_Id as key into each NXX_Tag_Table instead of having a specific number for each N.} \par {\ltrch\loch\f5 A sample :} \par {\ltrch\loch\f5 Bib_Table} \par {\ltrch\loch\f5 Bib_Id=1024} \par {\ltrch\loch\f5 Tag_0XX=832} \par {\ltrch\loch\f5 Tag_1XX=731} \par {\ltrch\loch\f5 Tag_2XX=124} \par {\ltrch\loch\f5 Tag_3XX=1} \par {\ltrch\loch\f5 Tag_4XX=186} \par {\ltrch\loch\f5 Tag_5XX=215} \par {\ltrch\loch\f5 Tag_6XX=985} \par {\ltrch\loch\f5 Tag_7XX=145} \par {\ltrch\loch\f5 Tag_8XX=467} \par \par {\ltrch\loch\f5 If we search every biblio having 200$a=\rdblquote Victor Hugo\rdblquote and 101$a=\rdblquote BNF\rdblquote , we must build a 3 relation select :} \par {\ltrch\loch\f5 linking from Tag_2XX to Bib_Table, then from Bib_Table to Tag_1XX.} \par \par {\ltrch\loch\f5 If we use Bib_Id as common key, we need only Tag_2XX and Tag_1XX table.} \par \par {\ltrch\loch\f5 One more reason : with this structure, we have can find a Tags when we have the Bib_Id, it's harder to find a Bib_Id when we have a Tag_2XX key. With a common key, the problem is solved ;-)} \par \par {\ltrch\loch\f5 That's why I propose to modify the table structure...} \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 NXX_Tag_Table (N from 0 to 9)} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 Stores, for each value of XX in a biblio the data line. This field is not used for searches, but for presentations. The tag_cache table is used for searches. When a line is more than 255 char long, a link to a blob record in the blob_table is used and the value is in this blob. The char is empty.} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ul\ltrch\loch\f5 {\ltrch\loch\f5 Fields :} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Bib_code} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Tag_number char(3)} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Tag_value varchar(255) (used only if length(value) <255)} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Blob_link_id longint (used only if length(value) >255)} \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 NXX_Subfield_Table (N from 0 to 9)} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 Table dropped for the tag_word.} \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 NXX_tag_word (N from 0 to 9)} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 This table contains the datas used for searches. The idea is explained in the next chapter. This table stores one record for each word in the marc section.} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ul {\ltrch\loch\f0 Fields :} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls2 {\ltrch\loch\f0 Bib_code} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls2 {\ltrch\loch\f0 Tag_number char(3)} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls2 {\ltrch\loch\f0 Subfield_id char(1)} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls2 {\ltrch\loch\f0 Word varchar(255)} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 Words longer than 255 char are ignored (in french, the longest word is 26 char long ;-) )} \par {\ltrch\loch\f0 Words present in the stopwords table are not stored in the MARC-DB} \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 DISCUSSION about MARC searches} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 The most important think about MARC tables, is that searches must be as well optimized as possible.} \par {\ltrch\loch\f0 Anyway, a search is always a headache in MARC, as the simple solution would be to have a biblio stored in a single line.} \par {\ltrch\loch\f0 As it's not possible to built a flat table with all the possible MARC tags, we must use a complex algorithm to do a search.} \par \par {\ltrch\loch\f0 Suppose we must do a select with :} \par {\ltrch\loch\f0 tag=200, $a contains \ldblquote lord\rdblquote and \ldblquote ring\rdblquote } \par {\ltrch\loch\f0 tag=101, $b contains \ldblquote Tolkien\rdblquote } \par {\ltrch\loch\f0 tag=001, $a equals \ldblquote 123456\rdblquote } \par \par {\ltrch\loch\f0 If we have 10 tables, a select should be :} \par {\ltrch\loch\f0 select biblio_id } \par {\ltrch\loch\f0 from \tab 2xx_subfield_table as 2xx,} \par {\ltrch\loch\f0 \tab 1xx_subfield_table as 1xx,} \par {\ltrch\loch\f0 \tab 0xx_subfield_table as 0xx } \par {\ltrch\loch\f0 where (tag=\rdblquote 200\rdblquote and 2xx.Mark=\rdblquote a\rdblquote and (2xx.value like \ldblquote %lord%\rdblquote and 2xx.value like \ldblquote %ring%\rdblquote )) } \par {\ltrch\loch\f0 and (tag=\rdblquote 101\rdblquote and 1xx.mark=\rdblquote b\rdblquote and 1xx.value like \ldblquote %Tolkien%\rdblquote ) } \par {\ltrch\loch\f0 and (tag=\rdblquote 001\rdblquote and 0xx.mark=\rdblquote a\rdblquote and 0xx.value=\rdblquote 123456\rdblquote ) and} \par {\ltrch\loch\f0 (0xx.Bib_Id=1xx.Bib_Id and 0xx.bib_Id=2xx.Bib_id)} \par \par {\ltrch\loch\f0 This select is quite complex, but in 1 select, we can find what we want. The only problem is this select uses 3 tables, 2 indexed joins (the last line), an indexed select on table 0xx and a partially indexed select on tables 1xx and 2xx. So, on an importan t library, this could be not fast...} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\i {\ltrch\loch\f0 (this proves we MUST have bib_id as common key in all tables : with differents id, we would have need )} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 \par {\ltrch\loch\f0 With the tag_word field, we can do only indexed searches. The search algorythm could search the Bib_id. If we want to search (A or B) and not(C), we can do 2 indexed select in arrays, merge both arrays, do a selected select for C and delete Bib_id found fr om the previous array.} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\i \par \pard\plain \sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs32\b\fs32\b\fs32\b \s4\li0\ri0\fi0\sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs32\lang255\ab\ltrch\dbch\afs32\langfe255\ab\loch\f2\fs32\lang1033\b {\ltrch\loch\f2 MARC operation into KOHA} \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 MARC structure} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 The idea is to define the MARC structure in 2 tables, allowing support for any MARC standard.} \par {\ltrch\loch\f0 The MARc structure is defined in 2 differents tables :} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\b {\ltrch\loch\f0 Tag_param :} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls1 {\ltrch\loch\f0 Tag_field} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls1 {\ltrch\loch\f0 Repeatable or Not Repeatable} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 If the field is Mandatory / Possible / Ignored. If it's mandatory, the field must be entered. If it's possible, the field can be entered, if it's ignored, the field must be not entered.} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 Koha-DB : this field (boolean) can be set to indicate that the tag must be mandatory because it's a part of the koha-DB.} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\b {\ltrch\loch\f0 Subfield_param :} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 It could contain, for each tag_field/tag_subfield pair :} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 Tag_field} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 Tag_subfield} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 If the subfield is Mandatory / Possible / Ignored. If it's mandatory, the subfield must be entered. If it's possible, the field can be entered, if it's ignored, the field must be not entered.} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 If the tag_subfield is Repeatable or Not Repeatable.} \par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 Koha-DB : this field (boolean) can be set to indicate that the tag must be mandatory because it's a part of the koha-DB.} \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Select} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 Selects are done through old koha-DB, or through MARC koha-DB, depending on the user choice. In opac, the search is done on koha-DB only. In koha-librarian, it can be done on koha or MARC DB.} \par \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Input} \par \pard\plain \li567\ri0\fi0\sb240\sa120\keepn\f2\fs28\b\fs28\b\fs28\b \s6\li567\ri0\fi0\sb240\sa120\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ab\ltrch\dbch\afs28\langfe255\ab\loch\f2\fs28\lang1033\b {\ltrch\loch\f2 Import} \par \pard\plain \s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 The import script uses the param tables to decide which fields must be added to the DB.} \par \pard\plain \li567\ri0\fi0\sb240\sa120\keepn\f2\fs28\b\fs28\b\fs28\b \s6\li567\ri0\fi0\sb240\sa120\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ab\ltrch\dbch\afs28\langfe255\ab\loch\f2\fs28\lang1033\b {\ltrch\loch\f2 Manual adds/modifications} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 Addings are done through 10 pages, each for NXX (N from 1 to 9). for each NXX tag field/subfield that must be added in the page, a <input type=text> is defined. For Repeatable subfields, a link opens a popup where you can add as many datas as you want.} \par {\ltrch\loch\f0 Data are stored into an array, and we make a heavy use of javascript.} \par {\ltrch\loch\f0 Any modifications is done on the MARC-DB and at the same time in the koha-DB.} \par \pard\plain \sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs32\b\fs32\b\fs32\b \s4\li0\ri0\fi0\sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs32\lang255\ab\ltrch\dbch\afs32\langfe255\ab\loch\f2\fs32\lang1033\b {\ltrch\loch\f2 Walktrough to MARC} \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 1} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033{\ltrch\loch\f6{\i0\f6 Definition of the DB}} \par {\ltrch\loch\f0 Creation of marcimport and koha2marc script.} \par {\ltrch\loch\f0 Creation of administration script for MARC structure.} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 Modification of present add/modify/delete biblio script.} \par \par {\ltrch\loch\f0 Now, we can use the old-koha version with the MARC-DB working in background.} \par \par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 2} \par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 Creation of MARC-DB add/modify biblio} \par {\ltrch\loch\f0 Creation of MARC-DB search} \par \par }
On Wed, 8 May 2002, paul POULAIN wrote:
paul POULAIN wrote:
In attachment, you will find my proposition for MARC version. don't hesitate to do any remarks.
RTF version and OpenOffice.org original version
Also placed in the Wiki for more convenient modifiings.
Thanks Paul for all the time and effort. I'm trying to digest all of it right now, so I'll hold off on making comments about it until I attain enlightnement ;) One tangental comment though; I've noticed a lot of small comments in a variety of places and from a lot of people that talk about how to implement things in a very web specific way. This is a dangerous place to go. It would be a lot better if we develop a very clear division between business logic and presentation logic. If we do this well, it means that we can write different front-ends much more easily (CLI, GNOME, KDE, FOX, WAP[1], whatever). -pate [1] Wouldn't it be great to reserve, renew, search for materials from a WAP enabled cell phone or similar device?
-- Paul
_______________________________________________________________
Have big pipes? SourceForge.net is looking for download mirrors. We supply the hardware. You get the recognition. Email Us: bandwidth@sourceforge.net _______________________________________________ Koha-devel mailing list Koha-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/koha-devel
Pat Eyler wrote:
Thanks Paul for all the time and effort. I'm trying to digest all of it right now, so I'll hold off on making comments about it until I attain enlightnement ;)
One tangental comment though; I've noticed a lot of small comments in a variety of places and from a lot of people that talk about how to implement things in a very web specific way. This is a dangerous place to go. It would be a lot better if we develop a very clear division between business logic and presentation logic. If we do this well, it means that we can write different front-ends much more easily (CLI, GNOME, KDE, FOX, WAP[1], whatever).
-pate
[1] Wouldn't it be great to reserve, renew, search for materials from a WAP enabled cell phone or similar device?
If I understand well, you say that because of my paragraph about how to manually add a biblio with the web interface ? If that's it, I'm OK. But I hope my DB-structure doesn't depend on the tool you use to play with koha... My two main priorities were : having a generic MARC structure to be able to accept any MARC format, and having a structure that enables fast searches on medium-big libraries. -- Paul
On Wed, 8 May 2002, paul POULAIN wrote:
Pat Eyler wrote:
Thanks Paul for all the time and effort. I'm trying to digest all of it right now, so I'll hold off on making comments about it until I attain enlightnement ;)
One tangental comment though; I've noticed a lot of small comments in a variety of places and from a lot of people that talk about how to implement things in a very web specific way. This is a dangerous place to go. It would be a lot better if we develop a very clear division between business logic and presentation logic. If we do this well, it means that we can write different front-ends much more easily (CLI, GNOME, KDE, FOX, WAP[1], whatever).
-pate
[1] Wouldn't it be great to reserve, renew, search for materials from a WAP enabled cell phone or similar device?
If I understand well, you say that because of my paragraph about how to manually add a biblio with the web interface ? If that's it, I'm OK. But I hope my DB-structure doesn't depend on the tool you use to play with koha...
No, I don't have any problems with your DB structure. (I still don't wuite understand MARC, but I'm getting there.) I'm just hoping that we can divide the kinds of changes we make into two types: Those that are presentation oriented (i.e., to the web interface or some other user interface). Those that are business logic oriented, like your DB changes. Sometimes there will be some overlap, you proposed extensions to the searches that would require changes to be made in the presentation as well. This is not a problem, we just need to make sure that the changes happen in both places. I think we're in violent agreement ;) -pate
My two main priorities were : having a generic MARC structure to be able to accept any MARC format, and having a structure that enables fast searches on medium-big libraries. -- Paul
On Wed, 8 May 2002, paul POULAIN wrote:
Pat Eyler wrote:
I think we're in violent agreement ;)
we are ;-)
Great.
Next question : when will we decide to use html::template or a similar tool for koha. It's a must have to separate presentation from business logic.
Let's decide this in our IRC meeting. Before then, we should certainly kick it about. html::template, AxKit, Mason, others? are all possible tools. I'm tempted to say that html::template is the best way to go, but I don't have enough experience with any of them to make a strong statement. Would someone like to code up a simple page or two in all three (and any others you want) so we can see what we'd be looking at? Also, if would be nice to know what requirements we'd be adding. (AxKit requires mod_perl, Mason strongly recommends it.) -pate
Chris agrees to say AxKit is too heavy for us, so the best choice is html::template. -- Paul
participants (2)
-
Pat Eyler -
paul POULAIN