Информационная система "Корпоративный сайт Главного федерального инспектора по Удмуртской Республике. Подсистема управления данными"

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 06.04.2013
Размер файла 3,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

RETURNS integer AS

$BODY$

DECLARE

t_page_id integer;

BEGIN

t_page_id:=page_add();

INSERT INTO menu_top (id_sub_menu,id_page,menu_top_name,menu_alt,menu_url)

VALUES (a_menu_id,t_page_id,a_menu_name,a_menu_alt,a_menu_url);

RETURN t_page_id;

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION menu_top_add(integer, character varying, text, text) OWNER TO postgres;

CREATE OR REPLACE FUNCTION menu_top_add(_menu_id integer, _menu_name character varying, _menu_alt text, _menu_url text, _menu_top_image text)

RETURNS integer AS

$BODY$

DECLARE

t_page_id integer;

BEGIN

t_page_id := page_add(NULL,_menu_name);

INSERT INTO menu_top (id_sub_menu, id_page, menu_top_name, menu_alt, menu_url, menu_top_image)

VALUES (_menu_id, t_page_id, _menu_name, _menu_alt, _menu_url, _menu_top_image);

RETURN t_page_id;

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION menu_top_add(integer, character varying, text, text, text) OWNER TO fobos;

CREATE OR REPLACE FUNCTION menu_top_delete(d_menu_top_id integer)

RETURNS integer AS

$BODY$

DECLARE

t_page_id integer;

BEGIN

SELECT id_page INTO t_page_id FROM menu_top WHERE id_menu_top = d_menu_top_id;

DELETE FROM menu_top WHERE id_menu_top = d_menu_top_id;

DELETE FROM page WHERE id_page = t_page_id;

RETURN 1;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION menu_top_delete(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION menu_top_get()

RETURNS SETOF menu_top AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM menu_top

ORDER BY id_sub_menu ASC, menu_top_name ASC

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION menu_top_get() OWNER TO postgres;

CREATE OR REPLACE FUNCTION menu_top_get_id_page(d_menu_top_id integer)

RETURNS integer AS

$BODY$

DECLARE

t_page_id integer;

t_page_id2 integer;

BEGIN

SELECT id_page INTO t_page_id FROM menu_top WHERE id_menu_top = d_menu_top_id;

IF t_page_id is NULL THEN

t_page_id2:=page_add();

UPDATE menu_top SET id_page = t_page_id2 WHERE id_menu_top = d_menu_top_id;

RETURN t_page_id2;

ELSE

RETURN t_page_id;

END IF;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION menu_top_get_id_page(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION menu_top_get_one_cascade()

RETURNS SETOF menu_top AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM menu_top

WHERE id_sub_menu IS NULL

ORDER BY id_sub_menu ASC, menu_top_name ASC

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION menu_top_get_one_cascade() OWNER TO postgres;

CREATE OR REPLACE FUNCTION menu_top_get_two_cascade(s_menu_id integer)

RETURNS SETOF menu_top AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM menu_top

WHERE id_sub_menu IS NOT NULL AND id_sub_menu = s_menu_id

ORDER BY id_sub_menu ASC, menu_top_name ASC

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION menu_top_get_two_cascade(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION name_menu_get_by_id_page(id_page integer)

RETURNS SETOF character varying AS

$BODY$

BEGIN

RETURN QUERY (

(SELECT m.menu_name

FROM menu m

WHERE m.id_page = id_page

UNION

SELECT mt.menu_top_name

FROM menu_top mt

WHERE mt.id_page = id_page

)

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION name_menu_get_by_id_page(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION news_add(a_id_page integer, a_news_theme character varying, a_text_html text)

RETURNS integer AS

$BODY$

BEGIN

INSERT INTO news (id_page, theme, text_html)

VALUES (a_id_page, a_news_theme, a_text_html);

RETURN currval ('news_id_news_seq');

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION news_add(integer, character varying, text) OWNER TO postgres;

CREATE OR REPLACE FUNCTION news_delete(d_id_news integer)

RETURNS SETOF news_image AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM news_image

WHERE id_news = d_id_news

);

DELETE FROM news

WHERE id_news = d_id_news;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION news_delete(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION news_fts_search(_text text)

RETURNS SETOF news AS

$BODY$

BEGIN

RETURN QUERY

SELECT n.*

FROM

news n JOIN news_fts nf

USING (id_news)

WHERE nf.news_fts @@ plainto_tsquery('russian', _text)

ORDER BY

ts_rank_cd (nf.news_fts, plainto_tsquery('russian', _text), 32) DESC;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION news_fts_search(text) OWNER TO postgres;

CREATE OR REPLACE FUNCTION news_get(id_page integer, lim integer, ofs integer)

RETURNS SETOF news AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM news n

WHERE n.id_page = id_page

ORDER BY n.date_add DESC, n.id_news DESC

LIMIT lim OFFSET ofs

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION news_get(integer, integer, integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION news_get_by_id_news(id_news integer)

RETURNS news AS

$BODY$

DECLARE

ret news%ROWTYPE;

BEGIN

SELECT INTO ret n.*

FROM news n

WHERE n.id_news = id_news;

RETURN ret;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION news_get_by_id_news(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION news_get_count(id_page integer)

RETURNS integer AS

$BODY$

BEGIN

RETURN (

SELECT COUNT(*)

FROM news n

WHERE n.id_page = id_page

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION news_get_count(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION news_get_date(id_page integer, _date_add date, lim integer, ofs integer)

RETURNS SETOF news AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM news n

WHERE

n.id_page = id_page AND

n.date_add <= _date_add

ORDER BY n.date_add DESC, n.id_news DESC

LIMIT lim OFFSET ofs

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION news_get_date(integer, date, integer, integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION news_get_date_count(_id_page integer, _date_add date)

RETURNS integer AS

$BODY$

BEGIN

RETURN (

SELECT COUNT(*)

FROM news n

WHERE n.id_page = _id_page AND

n.date_add <= _date_add

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION news_get_date_count(integer, date) OWNER TO postgres;

CREATE OR REPLACE FUNCTION news_image_add(a_id_news integer, a_file text, a_sub_title text)

RETURNS integer AS

$BODY$

BEGIN

INSERT INTO news_image (id_news, file, sub_title)

VALUES (a_id_news, a_file, a_sub_title);

RETURN currval ('news_image_id_news_image_seq');

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION news_image_add(integer, text, text) OWNER TO postgres;

CREATE OR REPLACE FUNCTION news_image_add(a_id_news integer, a_file text)

RETURNS integer AS

$BODY$

BEGIN

INSERT INTO news_image (id_news, file)

VALUES (a_id_news, a_file);

RETURN currval ('news_image_id_news_image_seq');

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION news_image_add(integer, text) OWNER TO fobos;

CREATE OR REPLACE FUNCTION news_image_delete(d_id_news_image integer)

RETURNS news_image AS

$BODY$

DECLARE

ret news_image%ROWTYPE;

BEGIN

SELECT INTO ret ni.*

FROM news_image ni

WHERE ni.id_news_image = d_id_news_image;

DELETE FROM news_image

WHERE id_news_image = d_id_news_image;

RETURN ret;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION news_image_delete(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION news_image_get(id_news integer)

RETURNS SETOF news_image AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM news_image ni

WHERE ni.id_news = id_news

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION news_image_get(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION news_update(u_id_news integer, u_date_add date, u_theme character varying, u_text_html text)

RETURNS integer AS

$BODY$

BEGIN

UPDATE news

SET date_add = u_date_add, theme = u_theme, text_html = u_text_html

WHERE id_news = u_id_news;

RETURN 1;

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION news_update(integer, date, character varying, text) OWNER TO postgres;

CREATE OR REPLACE FUNCTION page_add()

RETURNS integer AS

$BODY$

BEGIN

INSERT INTO page (news_bit, block_bit, plane_bit,quest_bit, count_view)

VALUES (B'0',B'0',B'0',B'0',0);

RETURN currval ('page_id_page_seq');

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION page_add() OWNER TO postgres;

CREATE OR REPLACE FUNCTION page_add(_id_page integer, _page_name text)

RETURNS integer AS

$BODY$

BEGIN

INSERT INTO page (news_bit, block_bit, plane_bit,quest_bit, count_view, id_sub_page, page_name)

VALUES (B'0',B'0',B'0',B'0',0, _id_page, _page_name);

RETURN currval ('page_id_page_seq');

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION page_add(integer, text) OWNER TO fobos;

CREATE OR REPLACE FUNCTION page_delete(_id_page integer)

RETURNS integer AS

$BODY$

BEGIN

DELETE FROM page

WHERE id_page = _id_page;

IF FOUND THEN

RETURN 1;

END IF;

RETURN 0;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION page_delete(integer) OWNER TO fobos;

CREATE OR REPLACE FUNCTION page_get(id_page integer)

RETURNS page AS

$BODY$

DECLARE

ret page%ROWTYPE;

BEGIN

SELECT INTO ret p.*

FROM page p

WHERE p.id_page = id_page;

UPDATE page

SET count_view = count_view + 1

WHERE id_page = ret.id_page;

RETURN ret;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION page_get(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION page_get_all()

RETURNS SETOF act_page AS

$BODY$

BEGIN

RETURN QUERY (

(

(SELECT p.id_page, mt.menu_top_name, p.page_content, p.php_file, p.news_bit, p.block_bit, p.plane_bit, p.quest_bit

FROM

page p JOIN menu_top mt

USING (id_page)

)

UNION ALL

(

SELECT p.id_page, m.menu_name, p.page_content, p.php_file, p.news_bit, p.block_bit, p.plane_bit, p.quest_bit

FROM

page p JOIN menu m

USING (id_page)

)

) ORDER BY id_page

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION page_get_all() OWNER TO postgres;

CREATE OR REPLACE FUNCTION page_get_parent(_id_page integer)

RETURNS SETOF page AS

$BODY$

BEGIN

RETURN QUERY(

SELECT *

FROM page p

WHERE p.id_page = ANY (

SELECT pp.id_sub_page

FROM page pp

WHERE pp.id_page = _id_page

)

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION page_get_parent(integer) OWNER TO fobos;

CREATE OR REPLACE FUNCTION page_get_sub_page(_id_page integer)

RETURNS SETOF page AS

$BODY$

BEGIN

RETURN QUERY

SELECT * FROM page

WHERE id_sub_page = _id_page;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION page_get_sub_page(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION page_get_sub_page_news(IN _id_menu_top integer, IN _menu_top_name character varying, IN _id_page integer, IN _id_sub_page integer, IN _page_name text, IN _checked integer)

RETURNS SETOF record AS

$BODY$

BEGIN

RETURN QUERY (

SELECT mt.id_menu_top, mt.menu_top_name, pp.id_page, pp.id_sub_page, pp.page_name, mp.id_page

FROM

menu_top mt LEFT JOIN page p

USING (id_page)

LEFT JOIN (

SELECT *

FROM page

WHERE news_bit = '1'

) pp

ON p.id_page = pp.id_sub_page

LEFT JOIN main_page mp

USING (id_menu_top)

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION page_get_sub_page_news(integer, character varying, integer, integer, text, integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION page_quest_bit_update(u_id_page integer)

RETURNS void AS

$BODY$

DECLARE

q_bit bit;

BEGIN

SELECT INTO q_bit p.quest_bit

FROM page p

WHERE p.id_page = u_id_page;

IF q_bit = '1' THEN

UPDATE page

SET quest_bit = '0'

WHERE id_page = u_id_page;

ELSE

UPDATE page

SET quest_bit = '1'

WHERE id_page = u_id_page;

END IF;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION page_quest_bit_update(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION plane_add(a_id_page integer, a_section integer, a_year integer, a_date_add date, a_date_eqv date, a_date_end date, a_task_text text, a_comment text)

RETURNS integer AS

$BODY$

BEGIN

INSERT INTO plane (id_page, section, year, date_add, date_eqv, date_end, task_text, comment)

VALUES (a_id_page, a_section, a_year, a_date_add, a_date_eqv, a_date_end, a_task_text, a_comment);

RETURN currval ('plane_id_plane_seq');

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION plane_add(integer, integer, integer, date, date, date, text, text) OWNER TO postgres;

CREATE OR REPLACE FUNCTION plane_delete(d_id_plane integer)

RETURNS SETOF plane_image AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM plane_image

WHERE id_plane = d_id_plane

);

DELETE FROM plane

WHERE id_plane = d_id_plane;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION plane_delete(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION plane_get(id_page integer, section integer, "year" integer)

RETURNS SETOF plane AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM plane p

WHERE

p.id_page = id_page AND

p.year = year AND

p.section = section

ORDER BY p.date_add DESC

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION plane_get(integer, integer, integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION plane_get_by_id_plane(id_plane integer)

RETURNS plane AS

$BODY$

DECLARE

ret plane%ROWTYPE;

BEGIN

SELECT INTO ret p.*

FROM plane p

WHERE p.id_plane = id_plane;

RETURN ret;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION plane_get_by_id_plane(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION plane_get_section(id_page integer)

RETURNS SETOF act_plane AS

$BODY$

BEGIN

RETURN QUERY (

SELECT DISTINCT p.section, p.year

FROM plane p

WHERE p.id_page = id_page

ORDER BY p.year DESC, p.section DESC

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION plane_get_section(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION plane_image_add(a_id_plane integer, a_file text)

RETURNS integer AS

$BODY$

BEGIN

INSERT INTO plane_image (id_plane, file)

VALUES (a_id_plane, a_file);

RETURN currval ('plane_image_id_plane_image_seq');

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION plane_image_add(integer, text) OWNER TO postgres;

CREATE OR REPLACE FUNCTION plane_image_delete(d_id_plane_image integer)

RETURNS plane_image AS

$BODY$

DECLARE

ret plane_image%ROWTYPE;

BEGIN

SELECT INTO ret pi.*

FROM plane_image pi

WHERE pi.id_plane_image = d_id_plane_image;

DELETE FROM plane_image

WHERE id_plane_image = d_id_plane_image;

RETURN ret;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION plane_image_delete(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION plane_image_get(id_plane integer)

RETURNS SETOF plane_image AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM plane_image pi

WHERE pi.id_plane = id_plane

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION plane_image_get(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION plane_update(u_id_plane integer, u_section integer, u_year integer, u_date_add date, u_date_eqv date, u_date_end date, u_task_text text, u_comment text)

RETURNS integer AS

$BODY$

BEGIN

UPDATE plane

SET section = u_section, year = u_year, date_add = u_date_add, date_eqv = u_date_eqv, date_end = u_date_end, task_text = u_task_text, comment = u_comment

WHERE id_plane = u_id_plane;

RETURN 1;

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION plane_update(integer, integer, integer, date, date, date, text, text) OWNER TO postgres;

CREATE OR REPLACE FUNCTION project_add(file text, url text, alt text)

RETURNS integer AS

$BODY$

BEGIN

INSERT INTO project (project_file, project_url, project_alt)

VALUES (file, url, alt);

RETURN currval('project_id_project_seq');

EXCEPTION

WHEN not_null_violation THEN RETURN -1;

WHEN unique_violation THEN RETURN -2;

WHEN check_violation THEN RETURN -3;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION project_add(text, text, text) OWNER TO postgres;

CREATE OR REPLACE FUNCTION project_delete(d_id_project integer)

RETURNS text AS

$BODY$

DECLARE

name text;

BEGIN

SELECT INTO name p.project_file

FROM project p

WHERE p.id_project = d_id_project;

DELETE FROM project

WHERE id_project = d_id_project;

RETURN name;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION project_delete(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION project_get()

RETURNS SETOF project AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM project

ORDER BY id_project ASC

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION project_get() OWNER TO postgres;

CREATE OR REPLACE FUNCTION project_update(u_id_project integer, u_url text, u_alt text)

RETURNS integer AS

$BODY$

BEGIN

UPDATE project

SET project_url = u_url, project_alt = u_alt

WHERE id_project = u_id_project;

RETURN 1;

EXCEPTION

WHEN not_null_violation THEN RETURN -1;

WHEN check_violation THEN RETURN -2;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION project_update(integer, text, text) OWNER TO postgres;

CREATE OR REPLACE FUNCTION quest_answer_add(a_id_page integer, a_quest_city character varying, a_quest_fio character varying, a_quest_email character varying, a_quest_text text, a_answer_text text, a_answer_date date)

RETURNS integer AS

$BODY$

BEGIN

INSERT INTO quest_answer (id_page, quest_city, quest_fio, quest_email, quest_text, answer_text, answer_date)

VALUES (a_id_page, a_quest_city, a_quest_fio, a_quest_email, a_quest_text, a_answer_text, a_answer_date);

RETURN currval ('quest_answer_id_quest_answer_seq');

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION quest_answer_add(integer, character varying, character varying, character varying, text, text, date) OWNER TO postgres;

CREATE OR REPLACE FUNCTION quest_answer_add_quest(a_id_page integer, a_city character varying, a_fio character varying, a_email character varying, a_quest text)

RETURNS integer AS

$BODY$

BEGIN

INSERT INTO quest_answer (id_page, quest_city, quest_fio, quest_email, quest_text)

VALUES (a_id_page, a_city, a_fio, a_email, a_quest);

RETURN 1;

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION quest_answer_add_quest(integer, character varying, character varying, character varying, text) OWNER TO postgres;

CREATE OR REPLACE FUNCTION quest_answer_delete(d_id_quest_answer integer)

RETURNS SETOF quest_answer_image AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM quest_answer_image

WHERE id_quest_answer = d_id_quest_answer

);

DELETE FROM quest_answer

WHERE id_quest_answer = d_id_quest_answer;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION quest_answer_delete(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION quest_answer_get(id_page integer, lim integer, ofs integer)

RETURNS SETOF quest_answer AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM quest_answer qa

WHERE

qa.id_page = id_page AND

(

qa.answer_text IS NOT NULL OR

qa.answer_text <> ''

)

ORDER BY qa.quest_date DESC

LIMIT lim OFFSET ofs

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION quest_answer_get(integer, integer, integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION quest_answer_get_all(id_page integer)

RETURNS SETOF quest_answer AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM quest_answer qa

WHERE qa.id_page = id_page

ORDER BY qa.quest_date DESC

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION quest_answer_get_all(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION quest_answer_get_by_id_quest_answer(id_quest_answer integer)

RETURNS quest_answer AS

$BODY$

DECLARE

ret quest_answer%ROWTYPE;

BEGIN

SELECT INTO ret qa.*

FROM quest_answer qa

WHERE qa.id_quest_answer = id_quest_answer;

RETURN ret;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION quest_answer_get_by_id_quest_answer(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION quest_answer_get_count(id_page integer)

RETURNS integer AS

$BODY$

BEGIN

RETURN (

SELECT COUNT(*)

FROM quest_answer qa

WHERE

qa.id_page = id_page AND

(

qa.answer_text IS NOT NULL OR

qa.answer_text <> ''

)

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION quest_answer_get_count(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION quest_answer_image_add(a_id_quest_answer integer, a_file text)

RETURNS integer AS

$BODY$

BEGIN

INSERT INTO quest_answer_image (id_quest_answer, file)

VALUES (a_id_quest_answer, a_file);

RETURN currval ('quest_answer_image_id_quest_answer_image_seq');

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION quest_answer_image_add(integer, text) OWNER TO postgres;

CREATE OR REPLACE FUNCTION quest_answer_image_delete(d_id_quest_answer_image integer)

RETURNS quest_answer_image AS

$BODY$

DECLARE

ret quest_answer_image%ROWTYPE;

BEGIN

SELECT INTO ret qi.*

FROM quest_answer_image qi

WHERE qi.id_quest_answer_image = d_id_quest_answer_image;

DELETE FROM quest_answer_image

WHERE id_quest_answer_image = d_id_quest_answer_image;

RETURN ret;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION quest_answer_image_delete(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION quest_answer_image_get(id_quest_answer integer)

RETURNS SETOF quest_answer_image AS

$BODY$

BEGIN

RETURN QUERY (

SELECT *

FROM quest_answer_image qi

WHERE qi.id_quest_answer = id_quest_answer

);

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION quest_answer_image_get(integer) OWNER TO postgres;

CREATE OR REPLACE FUNCTION quest_answer_update(u_id_quest_answer integer, u_quest_city character varying, u_quest_fio character varying, u_quest_email character varying, u_quest_text text, u_quest_date date, u_answer_text text, u_answer_date date)

RETURNS integer AS

$BODY$

BEGIN

UPDATE quest_answer

SET quest_city = u_quest_city, quest_fio = u_quest_fio, quest_email = u_quest_email, quest_text = u_quest_text, quest_date = u_quest_date, answer_text = u_answer_text, answer_date = u_answer_date

WHERE id_quest_answer = u_id_quest_answer;

RETURN 1;

EXCEPTION

WHEN foreign_key_violation THEN RETURN -1;

WHEN not_null_violation THEN RETURN -2;

WHEN unique_violation THEN RETURN -3;

WHEN check_violation THEN RETURN -4;

END

$BODY$

LANGUAGE 'plpgsql' VOLATILE

COST 100;

ALTER FUNCTION quest_answer_update(integer, character varying, character varying, character varying, text, date, text, date) OWNER TO postgres;

ПРИЛОЖЕНИЕ 2

РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММ

Выборка данных из таблицы audio

Рис. П.2.1

Выборка данных из таблицы city

Рис. П.2.2

Выборка данных из таблицы gallery_album

Рис. П.2.3

Выборка данных из таблицы journal

Рис. П.2.4

Выборка данных из таблицы link

Рис. П.2.5

ПРИЛОЖЕНИЕ 3

РУКОВОДСТВО ОПЕРАТОРА ПО ПРОГРАММЕ УПРАВЛЕНИЯ ДАННЫМИ

П. 3.1. Назначение программы

Программа предназначена для подключения системы к базе данных и корректного выполнения запросов к базе, с помощью которых строится интерфейс системы. Для повышения производительности системы и обеспечения безопасности данных все запросы к базе данных написаны в виде хранимых процедур.

Программа предназначена для выполнения следующих функций:

- создания таблиц базе данных;

- подключения к базе данных;

- генерирование запросов к базе данных;

- написание хранимых процедур;

- выполнение запросов к базе данных.

П.3.2. Условия применеия программы

Требования к техническому обеспечению рабочего места пользователя системы:

1) процессор с частотой не менее 1800 МГц;

2) оперативная память не менее 512 МБ;

3) жёсткий диск с объёмом свободного пространства не менее 1 ГБ;

4) цветной монитор;

5) клавиатура;

6) устройство управления курсором.

Минимальные требования к техническому обеспечению сервера:

1) процессор с частотой не менее 3 ГГц;

2) оперативной памяти не менее 2 ГБ;

3) жёсткий диск с объёмом свободного пространства 5 ГБ.

П.3.3. Пуск программы

Запуск программы происходит автоматически одновременно с начала загрузки всей системы.

П.3.4. Сообщения оператору

Сообщения, выдаваемые при работе программы, и необходимая реакция на них описана в табл. 3.1.

Таблица 3.1

Сообщения

Сообщение

Описание

Действие

Ошибка базы данных

Что-то произошло с базой данных

Попробывать перезагрузить страницу или зайти попозже

Ничего не найдено

По вашему запросу ничего не найдено

Изменить поисковый запрос, либо отказаться от поиска.

ПРИЛОЖЕНИЕ 4

СТРУКТУРА ТАБЛИЦ БАЗЫ ДАННЫХ

Таблица П.4.1

Структура таблицы audio

Тип ключа

Название поля

Тип

Описание

ПК

id_audio

Serial

Код записи

Title

Text

Заголовок записи

Text

Text

Текст записи

audio_file

Varchar

Ссылка на запись

date_add

Date

Дата добавления записи на сайт

Таблица П.1.2

Структура таблицы block

Тип ключа

Название поля

Тип

Описание

ПК

id_block

Serial

Код блока

id_page

Integer

Код страницы

ВК

id_city

Integer

Код города

block_position

Integer

block_title

Text

Заголовок блока

block_content

Text

Заголовок контента

Таблица П.1.3

Структура таблицыblock_fts

Тип ключа

Название поля

Тип

Описание

ПК

id_block

Serial

Код блока

block_fts

tsvector

Вектор

Таблица П.1.4

Структура таблицы block_image

Тип ключа

Название поля

Тип

Описание

ПК

id_block_image

Serial

Код изображения

ВК

id_block

Integer

Код блока

File

Text

Ссылка на файл

Таблица П.1.5

Структура таблицы city

Тип ключа

Название поля

Тип

Описание

ПК

id_city

Serial

Код города

city_name

Varchar

Название города

Таблица П.1.6

Структура таблицы gallery

Тип ключа

Название поля

Тип

Описание

ПК

id_gallery

Serial

Код картинки

ВК

id_gallery_album

Integer

Код альбома

gallery_file

Text

Ссылка на файл

ru_about

Text

Информация

Таблица П.1.7

Структура таблицыgallery_album

Тип ключа

Название поля

Тип

Описание

ПК

id_gallery_album

Serial

Код альбома

gallery_album_file

Text

Ссылка на файл

gallery_album_text

Text

Информация об альбоме

gallery_album_date_add

Date

Дата добавления

Таблица П.1.8

Структура таблицыgallery_magu

Тип ключа

Название поля

Тип

Описание

ПК

id_gallery_magu

Serial

Код изображения

gallery_magu_file

Text

Ссылка на файл

ru_about

Text

Информация

Таблица П.1.9

Структура таблицыgallery_magu_album

Тип ключа

Название поля

Тип

Описание

ПК

id_gallery_magu _album

serial

Код альбома

gallery_magu _album_file

Text

Ссылка на файл

gallery_magu _album_text

Text

Информация об альбоме

gallery_magu _album_date_add

date

Дата добавления

Таблица П.1.10

Структура таблицыgallery_top

Тип ключа

Название поля

Тип

Описание

ПК

id_gallery_top

Serial

Код изображения

File

Text

Ссылка на файл

Таблица П.1.11

Структура таблицы journal

Тип ключа

Название поля

Тип

Описание

ПК

id_journal

serial

Код журнала

journal_name

text

Название журнала

count_page

integer

Количество страниц

date_add

date

Дата добавления

journal_href

text

Ссылка на журнал

Таблица П.1.12

Структура таблицы link

Тип ключа

Название поля

Тип

Описание

ПК

id_link

serial

Код ссылки

link_text

text

Информация

link_url

text

Ссылка

link_image

text

Изображение

Таблица П.1.13

Структура таблицыmain_page

Тип ключа

Название поля

Тип

Описание

ВК

id_menu_top

Integer

Код меню

ВК

id_page

Integer

Код страницы

Таблица П.1.14

Структура таблицы menu

Тип ключа

Название поля

Тип

Описание

ПК

id_menu

serial

Код пункта меню

ВК

id_sub_menu

integer

Код под меню

id_page

integer

Код страницы

menu_name

varchar

Название меню

menu_alt

Text

Второе название

menu_url

Text

Ссылка

Таблица П.1.15

Структура таблицыmenu_top

Тип ключа

Название поля

Тип

Описание

ПК

id_menu_top

serial

Код меню

ВК

id_sub_menu

integer

Код под меню

ВК

id_page

integer

Код страницы

menu_top_name

varchar

Название меню

menu_alt

Text

Второе название

menu_url

Text

Ссылка

menu_top_image

Text

Изображение

Таблица П.1.16

Структура таблицы news

Тип ключа

Название поля

Тип

Описание

ПК

id_news

serial

Код новости

date_add

Date

Дата добавления

Theme

varchar

Тема новости

text_html

Text

Текст новости

Таблица П.1.17

Структура таблицыnews_fts

Тип ключа

Название поля

Тип

Описание

ВК

id_news

integer

Код новости

news_fts

tsvector

Вектор

Таблица П.1.18

Структура таблицыnews_image

Тип ключа

Название поля

Тип

Описание

ПК

id_news_image

serial

Код изображения

ВК

id_news

integer

Код новости

File

text

Ссылка на изображение

sub_title

text

Заголовок

Таблица П.1.19

Структура таблицы page

Тип ключа

Название поля

Тип

Описание

ПК

id_page

serial

Код страницы

page_content

bytea

Информация на странице

php_file

text

PHP файл

news_bit

bit

Системный бит

block_bit

bit

Системный бит

plane_bit

bit

Системный бит

quest_bit

bit

Системный бит

ВК

id_sub_page

integer

Код под страницы

page_name

text

Название страницы

Таблица П.1.20

Структура таблицы plane

Тип ключа

Название поля

Тип

Описание

ПК

id_plane

serial

Код плана

ВК

id_page

integer

Код страницы

Section

integer

Квартал

Year

integer

Год

date_add

date

Дата добавления

date_eqv

date

Продолжительность

date_end

date

Дата окончания

task_text

text

Текст задания

Comment

text

Комментарии

Таблица П.1.21

Структура таблицыplane_image

Тип ключа

Название поля

Тип

Описание

ПК

id_plane_image

serial

Код изображения

ВК

id_plane

integer

Код плана

File

text

Ссылка на файл

Таблица П.1.22

Структура таблицы project

Тип ключа

Название поля

Тип

Описание

ПК

id_project

serial

Код проекта

project_file

text

Файл проекта

project_url

text

Адрес проекта

Таблица П.1.23

Структура таблицыquest_answer

Тип ключа

Название поля

Тип

Описание

ПК

id_quest_answer

serial

Код вопроса, ответа

ВК

id_page

integer

Код страницы

quest_city

varchar

Город

quest_fio

varchar

ФИО

quest_email

varchar

Электронный адрес

quest_text

text

Текст вопроса

quest_date

date

Дата вопроса

answer_text

text

Текст ответа

answer_date

date

Дата ответа

Таблица П.1.24

Структуратаблицы quest_answer_image

Тип ключа

Название поля

Тип

Описание

ПК

id_quest_answer_image

Serial

Код изображения

ВК

id_quest_answer

Integer

Код вопроса и ответа

File

Text

Ссылка на изображение

Размещено на Allbest.ru


Подобные документы

  • Обоснование целесообразности разработки системы для сайта главного федерального инспектора Башкортостана. Функциональное назначение системы. Подключение системы к базе данных и корректное выполнение запросов к базе, с помощью которых строится интерфейс.

    дипломная работа [2,1 M], добавлен 07.07.2012

  • Создание подсистемы хранения и управления данными для корпоративного сайта. Особенности корпоративного сайта компании "Гвоздь", условия эксплуатации, определяющие основные требования к системе. Обеспечение безопасных условий труда инженера-разработчика.

    дипломная работа [3,9 M], добавлен 06.04.2013

  • Основы работы с прикладным программным обеспечением, содержащим составляющие для работы с данными. Составление исходного кода скриптов для сортировки, добавления, редактирования и удаления информации в базу данных. Особенности работы операции поиска.

    курсовая работа [610,7 K], добавлен 20.01.2012

  • Разработка программы, создающей и управляющей базой данных, ее реализация на языке Turbo Pascal. Организация алгоритма программы. Вывод информации и возможность добавления информации в базу данных. Поиск информации в базе данных по заданному значению.

    курсовая работа [26,7 K], добавлен 19.06.2010

  • Создание системы управления данными для информационной системы ВУЗа с помощью MS Access. Разработка таблиц и схемы базы данных, запросов в MS SQL Server, основных форм и отчетов. Организация формы главного меню для автоматического вызова объектов БД.

    курсовая работа [3,0 M], добавлен 09.04.2012

  • Выбор инструментальной среды для разработки базы данных. Подсистема сбора, обработки и загрузки данных. Укрупненный алгоритм разрабатываемой информационной системы. Формирование области запросов базы, интерфейс ввода и редактирования входных данных.

    курсовая работа [2,2 M], добавлен 25.12.2012

  • Технические средства обеспечения функционирования информационной системы. Проектирование базы данных информационной системы. Разработка веб-приложения – справочно-информационной системы для предприятия. Организация записи информации в базу данных.

    дипломная работа [4,4 M], добавлен 16.05.2022

  • Разработка web-приложения для оперирования данными с помощью базы данных и web-браузера в качестве клиента пользователя. Основные преимущества языка программирования Java. Осуществление редактирования, добавления информации и поиска по архивам данных.

    дипломная работа [2,1 M], добавлен 30.09.2016

  • Требования и структура систем обработки экономической информации. Технология обработки информации и обслуживание системы, защита информации. Процесс создания запросов, форм, отчетов, макросов и модулей. Средства организации баз данных и работы с ними.

    курсовая работа [2,7 M], добавлен 25.04.2012

  • Основные возможности программных комплексов "АРМ-Клиент", "Астрал-Отчет". Технология обработки информации в системе электронной обработки данных. Разработка рабочего места налогового инспектора, предназначенного для автоматизации заполнения деклараций.

    дипломная работа [285,3 K], добавлен 12.04.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.