Проектирование и разработка БД Oracle для информатизации объектов культуры

Разработка Базы Данных для информационной системы архива. Обоснование выбора Entity-Attribute-Value в качестве метода проектирования БД. Модификация ROT с учетом наследования, модели Тенцера. Процесс генерации таблиц. Тестовые примеры (test cases).

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

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

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

1230)A

1231 WHERE (A.r between ((nPageNumber-1)*nAmountPerPage+1) and (nPageNumber*nAmountPerPage))

1232 GROUP BY A.modified_time, A.MODIFIED_USER;

1233

1234 RETURN xDocument;

1235

1236 ELSIF vName = 'DICTIONARY' THEN

1237

1238 SELECT

1239 XMLElement("attribute_summary", XMLAttributes(nIDAttribute AS id),

1240 XMLAgg(XMLElement("transaction",

1241 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

1242 XMLAgg(

1243 XMLConcat(

1244 XMLElement("attribute",

1245 XMLAttributes(

1246 nIDAttribute AS id_attribute,

1247 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

1248 A.type_of_operation AS type_of_operation, A.note AS attribute_note,

1249 'DICTIONARY' AS attribute_datatype

1250),

1251 XMLElement("old_value_attribute",A.old_value),

1252 XMLElement("new_value_attribute",A.new_value)

1253)

1254)--XMLConcat

1255)--XMLAgg

1256)--XMLAttributes

1257 order by A.modified_time desc

1258)

1259)

1260 INTO xDocument

1261 FROM (

1262 SELECT a.*, usl.*, s.*, rownum r

1263 FROM attributes a, userdictionaryvalueslog usl, systemdatavalues s

1264 WHERE a.id = nIDAttribute and usl.id_attribute = nIDAttribute AND usl.id_attribute = s.idparent AND s.idlanguage = 1

1265)A

1266 WHERE (A.r between ((nPageNumber-1)*nAmountPerPage+1) and (nPageNumber*nAmountPerPage))

1267 GROUP BY A.modified_time, A.MODIFIED_USER;

1268

1269 RETURN xDocument;

1270

1271 END IF;

1272 RETURN NULL;

1273 END pageAuditByAttribute;

1274

1275 FUNCTION pageAuditByObject(nIDObject objects.id%TYPE, nIdLanguage NUMBER, nPageNumber NUMBER, nAmountPerPage NUMBER) RETURN XMLTYPE AS

1276 xDocument XMLTYPE;

1277 BEGIN

1278

1279 SELECT

1280 XMLElement("object_summary", XMLAttributes(nIDObject AS id),

1281 XMLAgg(XMLElement("transaction",

1282 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

1283 XMLAgg(

1284 XMLConcat(

1285 XMLElement("attribute",

1286 XMLAttributes(

1287 A.new_idattribute AS id_attribute,

1288 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

1289 A.type_of_operation AS type_of_operation, A.attribute_note AS attribute_note,

1290 A.attribute_datatype AS attribute_datatype, A.datatype_length AS datatype_length

1291),

1292 XMLElement("old_value_attribute",A.old_value),

1293 XMLElement("new_value_attribute",A.new_value)

1294),

1295 XMLElement("object",

1296 XMLAttributes(

1297 A.OLD_IDPARENTOBJECT AS OLD_IDPARENTOBJECT,

1298 A.NEW_IDPARENTOBJECT AS NEW_IDPARENTOBJECT,

1299 A.OBJECTTYPE NEW_OBJECTTYPE,

1300 A.OLD_OWNER OLD_OWNER,

1301 A.NEW_OWNER NEW_OWNER,

1302 A.OLD_ORIGHTS OLD_ORIGHTS,

1303 A.NEW_ORIGHTS NEW_ORIGHTS,

1304 A.OLD_ARIGHTS OLD_ARIGHTS,

1305 A.NEW_ARIGHTS NEW_ARIGHTS,

1306 A.OPERATION OPERATION,

1307 A.OBJECTNOTE OBJECTNOTE

1308)

1309)

1310)--XMLConcat

1311)--XMLAgg

1312)--XMLAttributes

1313 order by A.modified_time desc

1314)

1315)

1316 INTO xDocument

1317 FROM (

1318 SELECT B.*, rownum r

1319 FROM (

1320 --usermultilangvalueslog

1321 SELECT uml.id_attribute AS new_idattribute,

1322 to_clob(uml.old_value) AS old_value,

1323 to_clob(uml.new_value) AS new_value,

1324 uml.old_serialnumber AS old_serialnumber,

1325 uml.new_serialnumber AS new_serialnumber,

1326 uml.modified_user AS modified_user,

1327 uml.modified_time AS modified_time,

1328 uml.type_of_operation AS type_of_operation,

1329 s.value AS attribute_note,

1330 'MULTILANG' AS attribute_datatype,

1331 a.length AS datatype_length,

1332 null OLD_IDPARENTOBJECT,

1333 null NEW_IDPARENTOBJECT,

1334 null OBJECTTYPE,

1335 null OLD_OWNER,

1336 null NEW_OWNER,

1337 null OLD_ORIGHTS,

1338 null NEW_ORIGHTS,

1339 null OLD_ARIGHTS,

1340 null NEW_ARIGHTS,

1341 null OPERATION,

1342 null OBJECTNOTE

1343 FROM objects o, attributes a, objecttypes ot, usermultilangvalueslog uml, systemdatavalues s

1344 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1345 AND

1346 (uml.id_object = o.id and uml.id_attribute = a.id)

1347

1348 UNION ALL

1349 --userstringvalueslog

1350 SELECT uml.id_attribute AS new_idattribute,

1351 to_clob(uml.old_value) AS old_value,

1352 to_clob(uml.new_value) AS new_value,

1353 uml.old_serialnumber AS old_serialnumber,

1354 uml.new_serialnumber AS new_serialnumber,

1355 uml.modified_user AS modified_user,

1356 uml.modified_time AS modified_time,

1357 uml.type_of_operation AS type_of_operation,

1358 s.value AS attribute_note,

1359 'STRING' AS attribute_datatype,

1360 a.length AS datatype_length,

1361 null OLD_IDPARENTOBJECT,

1362 null NEW_IDPARENTOBJECT,

1363 null OBJECTTYPE,

1364 null OLD_OWNER,

1365 null NEW_OWNER,

1366 null OLD_ORIGHTS,

1367 null NEW_ORIGHTS,

1368 null OLD_ARIGHTS,

1369 null NEW_ARIGHTS,

1370 null OPERATION,

1371 null OBJECTNOTE

1372 FROM objects o, attributes a, objecttypes ot, userstringvalueslog uml, systemdatavalues s

1373 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1374 AND

1375 (uml.id_object = o.id and uml.id_attribute = a.id)

1376

1377 UNION ALL

1378 --userdatevalueslog

1379 SELECT uml.id_attribute AS new_idattribute,

1380 to_clob(uml.old_value) AS old_value,

1381 to_clob(uml.new_value) AS new_value,

1382 uml.old_serialnumber AS old_serialnumber,

1383 uml.new_serialnumber AS new_serialnumber,

1384 uml.modified_user AS modified_user,

1385 uml.modified_time AS modified_time,

1386 uml.type_of_operation AS type_of_operation,

1387 s.value AS attribute_note,

1388 'DATE' AS attribute_datatype,

1389 a.length AS datatype_length,

1390 null OLD_IDPARENTOBJECT,

1391 null NEW_IDPARENTOBJECT,

1392 null OBJECTTYPE,

1393 null OLD_OWNER,

1394 null NEW_OWNER,

1395 null OLD_ORIGHTS,

1396 null NEW_ORIGHTS,

1397 null OLD_ARIGHTS,

1398 null NEW_ARIGHTS,

1399 null OPERATION,

1400 null OBJECTNOTE

1401 FROM objects o, attributes a, objecttypes ot, userdatevalueslog uml, systemdatavalues s

1402 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1403 AND

1404 (uml.id_object = o.id and uml.id_attribute = a.id)

1405

1406 UNION ALL

1407 --userclobvalueslog

1408 SELECT uml.id_attribute AS new_idattribute,

1409 to_clob(uml.old_value) AS old_value,

1410 to_clob(uml.new_value) AS new_value,

1411 uml.old_serialnumber AS old_serialnumber,

1412 uml.new_serialnumber AS new_serialnumber,

1413 uml.modified_user AS modified_user,

1414 uml.modified_time AS modified_time,

1415 uml.type_of_operation AS type_of_operation,

1416 s.value AS attribute_note,

1417 'CLOB' AS attribute_datatype,

1418 a.length AS datatype_length,

1419 null OLD_IDPARENTOBJECT,

1420 null NEW_IDPARENTOBJECT,

1421 null OBJECTTYPE,

1422 null OLD_OWNER,

1423 null NEW_OWNER,

1424 null OLD_ORIGHTS,

1425 null NEW_ORIGHTS,

1426 null OLD_ARIGHTS,

1427 null NEW_ARIGHTS,

1428 null OPERATION,

1429 null OBJECTNOTE

1430 FROM objects o, attributes a, objecttypes ot, userclobvalueslog uml, systemdatavalues s

1431 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1432 AND

1433 (uml.id_object = o.id and uml.id_attribute = a.id)

1434

1435 UNION ALL

1436 --usernumbervalueslog

1437 SELECT uml.id_attribute AS new_idattribute,

1438 to_clob(uml.old_value) AS old_value,

1439 to_clob(uml.new_value) AS new_value,

1440 uml.old_serialnumber AS old_serialnumber,

1441 uml.new_serialnumber AS new_serialnumber,

1442 uml.modified_user AS modified_user,

1443 uml.modified_time AS modified_time,

1444 uml.type_of_operation AS type_of_operation,

1445 s.value AS attribute_note,

1446 'CLOB' AS attribute_datatype,

1447 a.length AS datatype_length,

1448 null OLD_IDPARENTOBJECT,

1449 null OBJECTTYPE,

1450 null NEW_OBJECTTYPE,

1451 null OLD_OWNER,

1452 null NEW_OWNER,

1453 null OLD_ORIGHTS,

1454 null NEW_ORIGHTS,

1455 null OLD_ARIGHTS,

1456 null NEW_ARIGHTS,

1457 null OPERATION,

1458 null OBJECTNOTE

1459 FROM objects o, attributes a, objecttypes ot, usernumbervalueslog uml, systemdatavalues s

1460 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1461 AND

1462 (uml.id_object = o.id and uml.id_attribute = a.id)

1463

1464 UNION ALL

1465 --userdictionaryvalueslog

1466 SELECT uml.id_attribute AS new_idattribute,

1467 to_clob(uml.old_value) AS old_value,

1468 to_clob(uml.new_value) AS new_value,

1469 uml.old_serialnumber AS old_serialnumber,

1470 uml.new_serialnumber AS new_serialnumber,

1471 uml.modified_user AS modified_user,

1472 uml.modified_time AS modified_time,

1473 uml.type_of_operation AS type_of_operation,

1474 s.value AS attribute_note,

1475 'CLOB' AS attribute_datatype,

1476 a.length AS datatype_length,

1477 null OLD_IDPARENTOBJECT,

1478 null NEW_IDPARENTOBJECT,

1479 null OBJECTTYPE,

1480 null OLD_OWNER,

1481 null NEW_OWNER,

1482 null OLD_ORIGHTS,

1483 null NEW_ORIGHTS,

1484 null OLD_ARIGHTS,

1485 null NEW_ARIGHTS,

1486 null OPERATION,

1487 null OBJECTNOTE

1488 FROM objects o, attributes a, objecttypes ot, userdictionaryvalueslog uml, systemdatavalues s

1489 WHERE o.id = nIDObject and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1490 AND

1491 (uml.id_object = o.id and uml.id_attribute = a.id)

1492

1493 UNION ALL

1494

1495 SELECT null AS new_idattribute,

1496 null AS old_value,

1497 null AS new_value,

1498 null AS old_serialnumber,

1499 null AS new_serialnumber,

1500 OL.MODIFIED_USER AS modified_user,

1501 OL.MODIFIED_TIME AS modified_time,

1502 null AS type_of_operation,

1503 null AS attribute_note,

1504 null AS attribute_datatype,

1505 null AS datatype_length,

1506 OL.OLD_IDPARENTOBJECT OLD_IDPARENTOBJECT,

1507 OL.NEW_IDPARENTOBJECT NEW_IDPARENTOBJECT,

1508 OL.NEW_OBJECTTYPE NEW_OBJECTTYPE,

1509 OL.OLD_OWNER OLD_OWNER,

1510 OL.NEW_OWNER NEW_OWNER,

1511 OL.OLD_ORIGHTS OLD_ORIGHTS,

1512 OL.NEW_ORIGHTS NEW_ORIGHTS,

1513 OL.OLD_ARIGHTS OLD_ARIGHTS,

1514 OL.NEW_ARIGHTS NEW_ARIGHTS,

1515 OL.TYPE_OF_OPERATION OPERATION,

1516 s.value OBJECTNOTE

1517 FROM objectslog OL, systemdatavalues s

1518 WHERE OL.ID_OBJECT = nIDObject and s.idparent = OL.ID_OBJECT AND S.IDLANGUAGE = nIdLanguage

1519 -- ORDER BY modified_time

1520

1521) B)A

1522 WHERE (A.r between ((nPageNumber-1)*nAmountPerPage+1) and (nPageNumber*nAmountPerPage))

1523 GROUP BY A.modified_time, A.MODIFIED_USER

1524 -- HAVING count(A.MODIFIED_TIME) between ((nPageNumber-1)*nAmountPerPage+1) and (nPageNumber*nAmountPerPage)--;

1525 ORDER BY A.modified_time;

1526

1527 RETURN xDocument;

1528

1529 END pageAuditByObject;

1530

1531 FUNCTION pageAuditByObjectType(nIDObjectType objecttypes.id%TYPE, nIdLanguage NUMBER, nPageNumber NUMBER, nAmountPerPage NUMBER) RETURN XMLTYPE IS

1532 xDocument XMLTYPE;

1533 BEGIN

1534

1535 --SELECT --XMLElement("object_type",

1536 -- XMLAttributes(nIDObjectType AS idObjectType),

1537 -- XMLElement("a",

1538

1539 SELECT XMLElement("object_type",

1540 XMLAttributes(1 AS idObjectType),

1541 XMLElement("objects_summary",

1542 XMLAgg(XMLElement("transaction",

1543 XMLAttributes(to_char(A.modified_time, 'dd-mm-yyyy hh24:mi:ss') AS modified_time, A.MODIFIED_USER AS MODIFIED_USER),

1544 XMLAgg(

1545 XMLElement("object_info",

1546 XMLAttributes(A.id AS "object_id"),

1547 XMLElement("attribute",

1548 XMLAttributes(

1549 A.new_idattribute AS id_attribute,

1550 A.old_serialnumber AS old_serialnumber, A.new_serialnumber AS new_serialnumber,

1551 A.type_of_operation AS type_of_operation, A.attribute_note AS attribute_note,

1552 A.attribute_datatype AS attribute_datatype, A.datatype_length AS datatype_length

1553),

1554 XMLElement("old_value_attribute",A.old_value),

1555 XMLElement("new_value_attribute",A.new_value)

1556),

1557 XMLElement("object_change",

1558 XMLAttributes(

1559 A.OLD_IDPARENTOBJECT AS OLD_IDPARENTOBJECT,

1560 A.NEW_IDPARENTOBJECT AS NEW_IDPARENTOBJECT,

1561 A.OBJECTTYPE NEW_OBJECTTYPE,

1562 A.OLD_OWNER OLD_OWNER,

1563 A.NEW_OWNER NEW_OWNER,

1564 A.OLD_ORIGHTS OLD_ORIGHTS,

1565 A.NEW_ORIGHTS NEW_ORIGHTS,

1566 A.OLD_ARIGHTS OLD_ARIGHTS,

1567 A.NEW_ARIGHTS NEW_ARIGHTS,

1568 A.OPERATION OPERATION,

1569 A.OBJECTNOTE OBJECTNOTE

1570)

1571)

1572)--XMLConcat

1573)--XMLAgg

1574)--XMLAttributes

1575 order by A.modified_time desc

1576)

1577)

1578)

1579 INTO xDocument

1580 --showAuditByObject(id, nIdLanguage)

1581 --) AS objects)

1582 FROM (

1583 SELECT B.*, rownum r

1584 FROM (

1585 --usermultilangvalueslog

1586 SELECT

1587 o.id AS id,

1588 uml.id_attribute AS new_idattribute,

1589 to_clob(uml.old_value) AS old_value,

1590 to_clob(uml.new_value) AS new_value,

1591 uml.old_serialnumber AS old_serialnumber,

1592 uml.new_serialnumber AS new_serialnumber,

1593 uml.modified_user AS modified_user,

1594 uml.modified_time AS modified_time,

1595 uml.type_of_operation AS type_of_operation,

1596 s.value AS attribute_note,

1597 'MULTILANG' AS attribute_datatype,

1598 a.length AS datatype_length,

1599 null OLD_IDPARENTOBJECT,

1600 null NEW_IDPARENTOBJECT,

1601 null OBJECTTYPE,

1602 null OLD_OWNER,

1603 null NEW_OWNER,

1604 null OLD_ORIGHTS,

1605 null NEW_ORIGHTS,

1606 null OLD_ARIGHTS,

1607 null NEW_ARIGHTS,

1608 null OPERATION,

1609 null OBJECTNOTE

1610 FROM objects o, attributes a, objecttypes ot, usermultilangvalueslog uml, systemdatavalues s

1611 WHERE o.idobjecttype = nIDObjectType and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1612 AND

1613 (uml.id_object = o.id and uml.id_attribute = a.id)

1614

1615 UNION ALL

1616 --userstringvalueslog

1617 SELECT

1618 o.id AS id,

1619 uml.id_attribute AS new_idattribute,

1620 to_clob(uml.old_value) AS old_value,

1621 to_clob(uml.new_value) AS new_value,

1622 uml.old_serialnumber AS old_serialnumber,

1623 uml.new_serialnumber AS new_serialnumber,

1624 uml.modified_user AS modified_user,

1625 uml.modified_time AS modified_time,

1626 uml.type_of_operation AS type_of_operation,

1627 s.value AS attribute_note,

1628 'STRING' AS attribute_datatype,

1629 a.length AS datatype_length,

1630 null OLD_IDPARENTOBJECT,

1631 null NEW_IDPARENTOBJECT,

1632 null OBJECTTYPE,

1633 null OLD_OWNER,

1634 null NEW_OWNER,

1635 null OLD_ORIGHTS,

1636 null NEW_ORIGHTS,

1637 null OLD_ARIGHTS,

1638 null NEW_ARIGHTS,

1639 null OPERATION,

1640 null OBJECTNOTE

1641 FROM objects o, attributes a, objecttypes ot, userstringvalueslog uml, systemdatavalues s

1642 WHERE o.idobjecttype = nIDObjectType and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1643 AND

1644 (uml.id_object = o.id and uml.id_attribute = a.id)

1645

1646 UNION ALL

1647 --userdatevalueslog

1648 SELECT

1649 o.id AS id,

1650 uml.id_attribute AS new_idattribute,

1651 to_clob(uml.old_value) AS old_value,

1652 to_clob(uml.new_value) AS new_value,

1653 uml.old_serialnumber AS old_serialnumber,

1654 uml.new_serialnumber AS new_serialnumber,

1655 uml.modified_user AS modified_user,

1656 uml.modified_time AS modified_time,

1657 uml.type_of_operation AS type_of_operation,

1658 s.value AS attribute_note,

1659 'DATE' AS attribute_datatype,

1660 a.length AS datatype_length,

1661 null OLD_IDPARENTOBJECT,

1662 null NEW_IDPARENTOBJECT,

1663 null OBJECTTYPE,

1664 null OLD_OWNER,

1665 null NEW_OWNER,

1666 null OLD_ORIGHTS,

1667 null NEW_ORIGHTS,

1668 null OLD_ARIGHTS,

1669 null NEW_ARIGHTS,

1670 null OPERATION,

1671 null OBJECTNOTE

1672 FROM objects o, attributes a, objecttypes ot, userdatevalueslog uml, systemdatavalues s

1673 WHERE o.idobjecttype = nIDObjectType and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1674 AND

1675 (uml.id_object = o.id and uml.id_attribute = a.id)

1676

1677 UNION ALL

1678 --userclobvalueslog

1679 SELECT

1680 o.id AS id,

1681 uml.id_attribute AS new_idattribute,

1682 to_clob(uml.old_value) AS old_value,

1683 to_clob(uml.new_value) AS new_value,

1684 uml.old_serialnumber AS old_serialnumber,

1685 uml.new_serialnumber AS new_serialnumber,

1686 uml.modified_user AS modified_user,

1687 uml.modified_time AS modified_time,

1688 uml.type_of_operation AS type_of_operation,

1689 s.value AS attribute_note,

1690 'CLOB' AS attribute_datatype,

1691 a.length AS datatype_length,

1692 null OLD_IDPARENTOBJECT,

1693 null NEW_IDPARENTOBJECT,

1694 null OBJECTTYPE,

1695 null OLD_OWNER,

1696 null NEW_OWNER,

1697 null OLD_ORIGHTS,

1698 null NEW_ORIGHTS,

1699 null OLD_ARIGHTS,

1700 null NEW_ARIGHTS,

1701 null OPERATION,

1702 null OBJECTNOTE

1703 FROM objects o, attributes a, objecttypes ot, userclobvalueslog uml, systemdatavalues s

1704 WHERE o.idobjecttype = nIDObjectType and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1705 AND

1706 (uml.id_object = o.id and uml.id_attribute = a.id)

1707

1708 UNION ALL

1709 --usernumbervalueslog

1710 SELECT

1711 o.id AS id,

1712 uml.id_attribute AS new_idattribute,

1713 to_clob(uml.old_value) AS old_value,

1714 to_clob(uml.new_value) AS new_value,

1715 uml.old_serialnumber AS old_serialnumber,

1716 uml.new_serialnumber AS new_serialnumber,

1717 uml.modified_user AS modified_user,

1718 uml.modified_time AS modified_time,

1719 uml.type_of_operation AS type_of_operation,

1720 s.value AS attribute_note,

1721 'CLOB' AS attribute_datatype,

1722 a.length AS datatype_length,

1723 null OLD_IDPARENTOBJECT,

1724 null OBJECTTYPE,

1725 null NEW_OBJECTTYPE,

1726 null OLD_OWNER,

1727 null NEW_OWNER,

1728 null OLD_ORIGHTS,

1729 null NEW_ORIGHTS,

1730 null OLD_ARIGHTS,

1731 null NEW_ARIGHTS,

1732 null OPERATION,

1733 null OBJECTNOTE

1734 FROM objects o, attributes a, objecttypes ot, usernumbervalueslog uml, systemdatavalues s

1735 WHERE o.idobjecttype = nIDObjectType and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1736 AND

1737 (uml.id_object = o.id and uml.id_attribute = a.id)

1738

1739 UNION ALL

1740 --userdictionaryvalueslog

1741 SELECT

1742 o.id AS id,

1743 uml.id_attribute AS new_idattribute,

1744 to_clob(uml.old_value) AS old_value,

1745 to_clob(uml.new_value) AS new_value,

1746 uml.old_serialnumber AS old_serialnumber,

1747 uml.new_serialnumber AS new_serialnumber,

1748 uml.modified_user AS modified_user,

1749 uml.modified_time AS modified_time,

1750 uml.type_of_operation AS type_of_operation,

1751 s.value AS attribute_note,

1752 'CLOB' AS attribute_datatype,

1753 a.length AS datatype_length,

1754 null OLD_IDPARENTOBJECT,

1755 null NEW_IDPARENTOBJECT,

1756 null OBJECTTYPE,

1757 null OLD_OWNER,

1758 null NEW_OWNER,

1759 null OLD_ORIGHTS,

1760 null NEW_ORIGHTS,

1761 null OLD_ARIGHTS,

1762 null NEW_ARIGHTS,

1763 null OPERATION,

1764 null OBJECTNOTE

1765 FROM objects o, attributes a, objecttypes ot, userdictionaryvalueslog uml, systemdatavalues s

1766 WHERE o.idobjecttype = nIDObjectType and o.idobjecttype = ot.id and a.idobjecttype = ot.id and s.idparent = a.id AND S.IDLANGUAGE = nIdLanguage

1767 AND

1768 (uml.id_object = o.id and uml.id_attribute = a.id)

1769

1770 UNION ALL

1771

1772 SELECT

1773 o.id AS id,

1774 null AS new_idattribute,

1775 null AS old_value,

1776 null AS new_value,

1777 null AS old_serialnumber,

1778 null AS new_serialnumber,

1779 OL.MODIFIED_USER AS modified_user,

1780 OL.MODIFIED_TIME AS modified_time,

1781 null AS type_of_operation,

1782 null AS attribute_note,

1783 null AS attribute_datatype,

1784 null AS datatype_length,

1785 OL.OLD_IDPARENTOBJECT OLD_IDPARENTOBJECT,

1786 OL.NEW_IDPARENTOBJECT NEW_IDPARENTOBJECT,

1787 OL.NEW_OBJECTTYPE NEW_OBJECTTYPE,

1788 OL.OLD_OWNER OLD_OWNER,

1789 OL.NEW_OWNER NEW_OWNER,

1790 OL.OLD_ORIGHTS OLD_ORIGHTS,

1791 OL.NEW_ORIGHTS NEW_ORIGHTS,

1792 OL.OLD_ARIGHTS OLD_ARIGHTS,

1793 OL.NEW_ARIGHTS NEW_ARIGHTS,

1794 OL.TYPE_OF_OPERATION OPERATION,

1795 s.value OBJECTNOTE

1796 FROM objectslog OL, systemdatavalues s, objects o

1797 WHERE o.idobjecttype = nIDObjectType AND OL.ID_OBJECT = o.id and s.idparent = OL.ID_OBJECT AND S.IDLANGUAGE = nIdLanguage

1798 -- ORDER BY modified_time

1799

1800) B)A

1801 WHERE

1802 (A.r between ((nPageNumber-1)*nAmountPerPage+1) and (nPageNumber*nAmountPerPage))

1803 GROUP BY A.modified_time, A.MODIFIED_USER--, A.ID

1804 ORDER BY A.modified_time;

1805

1806 RETURN xDocument;

1807

1808 END pageAuditByObjectType;

1809

1810 FUNCTION addGroupRights(nIDObject objects.id%TYPE) RETURN XMLTYPE IS

1811 xDocument XMLTYPE;

1812 BEGIN

1813 SELECT

1814 XMLAgg(

1815 XMLElement("usergroup",

1816 XMLAttributes(ug.name AS group_name

1817,uug.grights AS "group_default_right"

1818,oug.grights AS "group_object_right")

1819)

1820)

1821 INTO xDocument

1822 FROM users u, usergroups ug, users_usergroups uug, objects_usergroups oug

1823 WHERE u.id = uug.id_user and uug.id_usergroup = oug.id_usergroup(+) and u.name = user

1824 and (oug.id_object = nIDObject or oug.id_object is null)

1825 and ug.id = uug.id_usergroup;

1826 RETURN xDocument;

1827 END addGroupRights;

1828

1829 FUNCTION showObjectRights(nIDObject objects.id%TYPE) RETURN XMLTYPE IS

1830 xDocument XMLTYPE;

1831 BEGIN

1832 SELECT

1833 XMLElement("object_rights",

1834 XMLAttributes(nIDObject AS id_object),

1835 XMLElement("owner", o.owner),

1836 XMLElement("owner_right", o.orights),

1837 XMLElement("usergroups",addGroupRights(nIDObject)),

1838 XMLElement("others_right", o.arights)

1839)

1840 INTO xDocument

1841 FROM objects o

1842 WHERE o.id = nIDObject;

1843

1844 RETURN xDocument;

1845 END showObjectRights;

1846

1847

1848 FUNCTION showFoundObjectRights RETURN XMLTYPE IS

1849 xDocument XMLTYPE;

1850 BEGIN

1851 SELECT

1852 XMLElement("Found_object_rights",

1853 XMLAgg(

1854 XMLElement("object",

1855 XMLAttributes(o.id AS id_object),

1856 XMLElement("owner", o.owner),

1857 XMLElement("owner_right", o.orights),

1858 XMLElement("usergroups",datamodification.addGroupRights(o.id)),

1859 XMLElement("others_right", o.arights)

1860)

1861)

1862)

1863 INTO xDocument

1864 FROM objects o, tempfoundobjects t

1865 WHERE o.id = t.id;

1866

1867 RETURN xDocument;

1868 END showFoundObjectRights;

1869

1870 end DATAMODIFICATION;

1871 /

Листинг пакета GENERATETABLES

Пакет GENERATETABLES предназначен для генерации пользовательских таблиц. Таким образом, будут пересозданы все объекты пользовательских схем: вначале будут созданы пользовательские таблицы, затем на них пользовательские представления. Код заголовка пакета и комментарии к заголовку пакета (см. таб.Пр.1.2.) ниже:

Таблица Пр1.2. Комментарии к заголовку пакета generateTables.

Номер строчки кода

Комментарии

3

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

4

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

5

Процедура insertDataParentTables предназначена для вставки значений для сгенерированных таблиц.

SQL> CREATE OR REPLACE PACKAGE generateTables IS

2

3 procedure doGenerate;

4 procedure createParentTables;

5 procedure insertDataParentTables;

6

7 END generateTables;

8 /

Package created

Небольшие комментарии по реализации тела пакета generateTables:

Таблица Пр1.3. Комментарии к телу пакета generateTables.

Номера строчек кода

Комментарии

3-19

Процедура dropParentTables предназначена для удаления таблиц (если они существуют) схемы. Обратите внимание, что ее спецификации нету в заголовке пакета generateTables, поэтому она доступна только внутри пакета другим процедурам этого пакета. Создается курсор for curTables IN (select name from objecttypes) LOOP - 7 строка, по которым удаляются таблицы соответствующих объектных типов. Если такой таблицы по какой-либо причине нету, то срабатывает исключение, выводится сообщение о том, что такой таблицы нету, и цикл 7 строки продолжается.

21-38

Процедура createParentTables предназначена для создания генерируемых таблиц с атрибутами соответвующие объектному типу, для которого создается плоская таблица. Для этого создается курсор по всем объектным типам. В переменную сSQLCode, предназначенную для хранения динамического SQL кода, записывается код, который собирается, как совокупность объектного типа

(значение внешнего курсора for curTables IN (select name, id from objecttypes) LOOP - 25 строка кода) и атрибутов ему соответствующих (значения параметризированного внутреннего курсора for curAttributes IN (select name, iddatatype, length from attributes where idobjecttype = curTables.id) LOOP - 27 строка кода).

40-61

Процедура insertDataParentTables предназначена для вставки значений для сгенерированных таблиц. Для этого создается курсор по всем объектным типам. В переменную сSQLCode, предназначенную для хранения динамического SQL кода, записывается код, который собирается, как совокупность объектного типа (значение внешнего курсора for curTables IN (select name, id from objecttypes) LOOP - 45 строка кода) и атрибутов ему соответствующих (значения параметризированного курсора for curAttributes IN (select name, iddatatype, length from attributes where idobjecttype = curTables.id) LOOP - 47 строка кода). Значения в генерируемую таблицу выбираются из системной таблицы userStringValues, которая хранит в поле Value значения для соответветствующего атрибута и объекта (его id задается из внутреннего курсора for curObjects IN (SELECT id from objects where idobjecttype = curTables.id) LOOP - 50 строка кода).

63-68

Процедура doGenerate предназначена для генерации, состоящей из удаления таблиц (если они существуют), создания и вставки значений данных в генерируемые таблицы и состоит из последовательного вызова процедур dropParentTables, createParentTables и insertDataParentTables.

SQL> CREATE OR REPLACE PACKAGE BODY generateTables IS

2

3 procedure dropParentTables is

4 vSQLCode VARCHAR2(4000);

5 eTableNotExists EXCEPTION;

6 PRAGMA EXCEPTION_INIT(eTableNotExists, -00942);

7 begin

8 for curTables IN (select name from objecttypes) LOOP

9 BEGIN

10 vSQLCode := 'DROP TABLE '||curTables.Name;

11 EXECUTE IMMEDIATE vSQLCode;

12 DBMS_OUTPUT.put_line(vSQLCode);

13 EXCEPTION

14 WHEN eTableNotExists THEN

15 --catch the exception that the table doesn't exist and continue dropping the schema tables

16 DBMS_OUTPUT.put_line('TABLE '||curTables.Name||' doesn''t exist and therefore can''t be dropped');

17 END;

18 END LOOP;

19 end dropParentTables;

20

21 procedure createParentTables is

22 cSQLCode VARCHAR2(4000);

23 vName VARCHAR2(4000);

24 begin

25 for curTables IN (select name, id from objecttypes) LOOP

26 cSQLCode := 'CREATE TABLE '||curTables.Name||'(ID NUMBER PRIMARY KEY';

27 for curAttributes IN (select name, iddatatype, length from attributes where idobjecttype = curTables.id) LOOP

28 select name into vName from datatypes where id = curAttributes.Iddatatype;

29 cSQLCode := cSQLCode || ',' || curAttributes.Name || ' ' || vName;

30 if vName = 'VARCHAR2' THEN

31 cSQLCode := cSQLCode ||'(' || curAttributes.Length ||')';

32 END IF;

33 end loop;

34 cSQLCode := cSQLCode ||')';

35 --DBMS_OUTPUT.put_line(cSQLCode);

36 EXECUTE IMMEDIATE cSQLCode;

37 END LOOP;

38 end createParentTables;

39

40 procedure insertDataParentTables is

41 cSQLCode VARCHAR2(4000);

42 cTableCode VARCHAR2(2000);

43 vValue VARCHAR2(200);

44 begin

45 for curTables IN (select name, id from objecttypes) LOOP

46 cTableCode := 'INSERT INTO '||curTables.Name||'(ID';

47 for curAttributes IN (select name, iddatatype, length from attributes where idobjecttype = curTables.id) LOOP

48 cTableCode := cTableCode ||',' || curAttributes.Name;

49 end loop;

50 for curObjects IN (SELECT id from objects where idobjecttype = curTables.id) LOOP

51 cSQLCode := cTableCode || ') VALUES (' || curObjects.id;

52 for curAttributes IN (select name, iddatatype, length, id from attributes where idobjecttype = curTables.id) LOOP

53 select value into vvalue from userstringvalues where idobject = curObjects.id and idattribute = curAttributes.id;

54 cSQLCode := cSQLCode || ', ''' || vvalue || '''';

55 end loop;

56 cSQLCode := cSQLCode || ')';

57 EXECUTE IMMEDIATE cSQLCode;

58 END LOOP;

59 END LOOP;

60 COMMIT;

61 end insertDataParentTables;

62

63 procedure doGenerate IS

64 BEGIN

65 dropParentTables;

66 createParentTables;

67 insertDataParentTables;

68 END doGenerate;

69

70 END generateTables;

71 /

Package body created

Листинг пакета SEARCHDATA

Пакет SEARCHDATA предназначен для поиска объектов по набору атрибутов и заданным поисковых параметрам по этим атрибутам. Код заголовка пакета и комментарии к заголовку пакета (см. таб.Пр.1.4.) ниже:

Таблица Пр.1.4. Комментарии к заголовку пакета SEARCHDATA.

номер строчки кода

Комментарии

2

Функция insertSearchParameters предназначена для вставки задаваемых в приложении поисковых параметров в таблицу SEARCHPARAMETERS.

3

Процедура clearSearchParameters предназначена для удаления записей поисковых параметров в таблице SEARCHPARAMETERS.

4

Функция getObjectPageIndex предназначена для вывода номера страницы на найденный объект.

5

Функция doSearch предназначена для поиска.

6

Функция getSearchParamNum предназначена для вывода количества заданных поисковых параметров в таблице SEARCHPARAMETERS.

7

Функция getFoundObjectNum предназначена для вывода общего количества найденных объектов.

8

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

9

Функция getConditionType предназначена для вывода наименования поискового атрибута по его id.

SQL> create or replace package SEARCHDATA as

2 function insertSearchParameters (nIDAttribute NUMBER,nIDCondition NUMBER,vValue VARCHAR2,nIDLanguage NUMBER) return NUMBER;

3 procedure clearSearchParameters;

4 function getObjectPageIndex (nIDObject NUMBER,nPageSize NUMBER) return NUMBER;

5 function doSearch (nIDObjectType NUMBER) return NUMBER;

6 function getSearchParamNum return NUMBER;

7 function getFoundObjectNum return NUMBER;

8 function getFoundObjectNum (nIDObjectType NUMBER) return NUMBER;

9 function getConditionType (nIdCondition NUMBER) return VARCHAR2;

10 end SEARCHDATA;

11 /

Листинг пакета SEARCHDATA приведен ниже. Отмечу, что в теле пакета есть private-функция getQueryText(31-57 строки). Эта функция предназначена для формирования кода запроса для поиска по объектам.

SQL> create or replace package body SEARCHDATA as

2

3 function insertSearchParameters (nIDAttribute NUMBER,nIDCondition NUMBER,vValue VARCHAR2,nIDLanguage NUMBER) return NUMBER as

4 BEGIN

5

6 INSERT INTO SEARCHPARAMETERS (IDATTRIBUTE,IDCONDITION,IDLANGUAGE,VALUE,IDSEARCHOBJECTTYPE)

7 SELECT nIDAttribute,nIDCondition,nIDLanguage, NVL(vValue, 0), ID

8 FROM attributes WHERE idobjecttype = nIDAttribute;

9 RETURN SQL%ROWCOUNT;

10

11 END;

12

13 procedure clearSearchParameters as

14 begin

15 DELETE FROM SEARCHPARAMETERS;

16 end;

17

18 function getObjectPageIndex (nIDObject NUMBER,nPageSize NUMBER) return NUMBER as

19 nPageNumber NUMBER;

20 nSerial NUMBER;

21 BEGIN

22 -- get object serial number

23 SELECT A.OBJECTSERIAL INTO nSerial FROM TEMPFOUNDOBJECTS A WHERE A.ID = nIDObject;

24 -- get page number

25 SELECT CEIL(COUNT(*)/nPageSize) INTO nPageNumber FROM TEMPFOUNDOBJECTS A

26 WHERE A.OBJECTSERIAL <= nSerial;

27 RETURN nPageNumber;

28 EXCEPTION WHEN NO_DATA_FOUND THEN RETURN -1;

29 END;

30

31 function getQueryText (nIDObjectType NUMBER) return CLOB as

32 vBaseTableName VARCHAR2(50) := ObjectsData.getObjectTypeSystemName(nIDObjectType);

33 cSQLText CLOB;

34 BEGIN

35

36 SELECT A.NAME

37 INTO vBaseTableName

38 FROM OBJECTTYPES A

39 WHERE A.ID = nIDOBjectType;

40

41 cSQLText := 'INSERT INTO TEMPFOUNDOBJECTS (ID,OBJECTSERIAL,HIERARCHICALSERIAL,FUSEOBJECT) ' ||

42 'SELECT ID,row_number() over (order by rnum) OBJECTSERIAL,row_number() over (order by rnum) HIERARCHICALSERIAL,1 FROM (SELECT ';

43 IF cSQLText IS NOT NULL THEN

44 -- hint for connect sort and search tables

45 cSQLText := cSQLText || '/*+ USE_NL(M) */ '

46 || vBaseTableName || '.ID, ROWNUM RNUM FROM ' || vBaseTableName || ',(' || cSQLText || ') M';

47 ELSE

48 cSQLText := cSQLText || vBaseTableName || '.ID, ROWNUM RNUM FROM ' || vBaseTableName;

49 END IF;

50

51

52 -- sorting

53 cSQLText := cSQLText || ' ORDER BY 1';

54 -- close query

55 cSQLText := cSQLText || ')';

56 RETURN cSQLText;

57 END;

58

59 function doSearch (nIDObjectType NUMBER) return NUMBER as

60 cSQLCode CLOB;

61 BEGIN

62

63 cSQLCode := getQueryText(nIDObjectType);

64

65 -- execute search query

66 EXECUTE IMMEDIATE cSQLCode;

67

68 RETURN SQL%ROWCOUNT;

69

70 END;

71

72 function getSearchParamNum return NUMBER as

73 nSearchParamNum NUMBER;

74 BEGIN

75 SELECT COUNT(*) INTO nSearchParamNum FROM SEARCHPARAMETERS A;

76 RETURN nSearchParamNum;

77 END;

78

79 function getConditionType (nIdCondition NUMBER) return VARCHAR2 as

80 cValue CONDITIONS.VALUE%TYPE;

81 BEGIN

82 SELECT C.VALUE INTO cValue FROM CONDITIONS C WHERE C.ID = nIDCondition;

83 RETURN cValue;

84 EXCEPTION WHEN NO_DATA_FOUND THEN

85 RETURN NULL;

86 END;

87

88 function getFoundObjectNum return NUMBER as

89 nObjectsNum NUMBER;

90 BEGIN

91 SELECT COUNT(*) INTO nObjectsNum

92 FROM TEMPFOUNDOBJECTS A WHERE A.FUSEOBJECT = 1;

93 RETURN nObjectsNum;

94 END;

95

96 function getFoundObjectNum (nIDObjectType NUMBER) return NUMBER as

97 nObjectsNum NUMBER;

98 BEGIN

99 SELECT

100 COUNT(*) INTO nObjectsNum

101 FROM

102 tempfoundobjects tf,

103 objects obj

104 WHERE

105 tf.id = obj.id

106 AND obj.idobjecttype = nIDObjectType

107 AND tf.fuseobject = 1;

108 RETURN nObjectsNum;

109 END;

110

111 end SEARCHDATA;

112 /

Листинг пакета SECURITYDATA

Пакет SECURITYDATA реализует политику тщательного контроля доступа, т.е. в зависимости от контекста подключения, предоставляет пользователю на объект права владельца или по умолчанию. Код заголовка пакета и комментарии к заголовку пакета (см. таб.Пр.1.5.) ниже:

Таблица Пр.1.5. Комментарии к заголовку пакета SECURITYDATA.

номер строчки кода

Комментарии

3

Функция checkRights предназначена для динамического определения прав вызывающего пользователя на объекты idObject.

4

Это перегруженная версия функции checkRights 3 строчки кода. Необходима для ускоренного динамического определения прав вызывающего пользователя на объекты idObject, для этого все параметры объекта должны быть определены заранее.

SQL> CREATE OR REPLACE PACKAGE SECURITYDATA

2 AS

3 FUNCTION checkRights(idObject NUMBER) RETURN NUMBER;

4 FUNCTION checkRights(idObject NUMBER, oright NUMBER, owner VARCHAR2, aright NUMBER) RETURN NUMBER;

5 END SECURITYDATA;

6 /

Package created

Код тела пакета SECURITYDATA:

Таблица Пр.1.6. Комментарии к телу пакета SECURITYDATA.

номера строчки кода

Комментарии

5-21

Функция checkRights предназначена для динамического определения прав вызывающего пользователя на объекты idObject. Строки 13-16: если пользователь является владельцем объекта то функция возвращает права владельца на объект. Строки 18-19: Иначе возвращаются права по умолчанию.

23-33

Это перегруженная версия функции checkRights 3 строчки кода. Необходима для ускоренного динамического определения прав вызывающего пользователя на объекты idObject, для этого все параметры объекта должны быть определены заранее. Строки 27-29: если пользователь является владельцем объекта то функция возвращает права владельца на объект. Строка 31: Иначе возвращаются права по умолчанию.

SQL> CREATE OR REPLACE PACKAGE BODY SECURITYDATA

2 AS

3

4

5 FUNCTION checkRights(idObject NUMBER) RETURN NUMBER

6 AS

7 nRight objectprivileges.id%TYPE;

8 vOwner objects.owner%TYPE;

9 BEGIN

10

11 SELECT owner INTO vOwner FROM objects WHERE id = idObject;

12

13 IF SYS_CONTEXT ('USERENV', 'SESSION_USER') = vOwner THEN

14 SELECT orights INTO nRight FROM objects WHERE id = idObject;

15 RETURN nRight;

16 END IF;

17

18 SELECT arights INTO nRight FROM objects WHERE id = idObject;

19 RETURN nRight;

20

21 END checkRights;

22

23 FUNCTION checkRights(idObject NUMBER, oright NUMBER, owner VARCHAR2, aright NUMBER) RETURN NUMBER

24 AS

25 BEGIN

26

27 IF SYS_CONTEXT ('USERENV', 'SESSION_USER')= owner THEN

28 RETURN oright;

29 END IF;

30

31 RETURN aright;

32

33 END checkRights;

34

35 END SECURITYDATA;

36 /

Приложение 2. Расширенный список тестовых примеров

В таблице Пр2.1. приведены тест-кейсы, которые проводились при разработке и тестировании базы данных. Возможные приоритеты тест-кейсов в порядке убывания их статуса: Blocker, Critical, Major, Minor, Trivial. К сожалению, ввиду относительно большого, проведенных тест-кейсов, здесь я размещаю только тест-кейсы у которых относительный приоритет Major и выше.

Таблица Пр2.1. Test cases.

ID

Название

Цель

Среда выполнения

Пошаговое выполнение

Критерий выполнения

Приоритет

DB1

Поддержка объектов на русском языке

Проверка создания, редактирования и удаления объектов на русском языке.

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, в котором есть атрибуты на русском языке.

2.Создать объект та-кого объектного типа.

3.Заполнить значения атрибутов объектного типа литералами на русском языке.

4.Сохранить в БД.

5. Выбрать этот объект из БД.

Наличие объектов и корректный вывод значений атрибутов объекта на русском языке.

Blocker

DB2

Поддержка объектов на английском языке

Проверка создания, редактирования и удаления объектов на английском языке.

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, в котором есть атрибуты на английском языке.

2.Создать объект такого объектного типа.

3.Заполнить значения атрибутов объектного типа литералами на английском языке.

4.Сохранить в БД.

5. Выбрать этот объект из БД.

Наличие объектов и корректный вывод значений атрибутов объекта на английском языке.

Blocker

DB3

Поддержка объектов на немецком языке

Проверка создания, редактирования и удаления объектов на немецком язы-ках.

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, в котором есть атрибуты на немецком языке.

2.Создать объект такого объектного типа.

3.Заполнить значения атрибутов объектного типа литералами на немецком языке.

4.Сохранить в БД.

5. Выбрать этот объект из БД.

Наличие объектов и корректный вывод значений атрибутов объекта на немецком языке.

Blocker

DB4

Поддержка переключения работы информационной системы с русского на английский язык

Проверка функционирования переключения работы информационной системы с русского на английский язык

Internet Explorer 6.0.

1. Установить в приложении русский язык.

2. Выбрать объект.

3.Переключиться на английский язык.

4. Выбрать объект.

Корректное отображение значений атрибутов объекта как русском так и на английских языках

Critical

DB5

Поддержка переключения работы информационной системы с английского на русский язык

Проверка функционирования переключения ра-боты информа-ционной системы с русского на ан-глийский язык

PL\SQL Developer 7.1.5.1398

1. Установить в приложении английский язык.

2. Выбрать объект.

3.Переключиться на русский язык.

4. Выбрать объект

Корректное отображение значений атрибутов объекта как русском так и на английских языках

Critical

DB6

Поддержка безязыково-го типа MULTILANG

Проверка функционирования безязыкового типа MULTILANG

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, в котором есть атрибуты типа данных MULTI-LANG.

2.Создать объект та-кого объектного типа.

3.Заполнить значения атрибутов объектного типа. 4.Сохранить в БД.

5. Выбрать этот объект из БД.

Наличие объектов и корректный вывод значения атрибута.

Major

DB7

Поддержка аудита вставки нового объекта с атрибутом типа DATE

Поддержка функционирования аудита на вставку нового объекта с атрибутом типа DATE

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных DATE.

2. Создать новый объект выбранного объектного типа.

3.Вывести аудит на атрибут, на объект и на выбранный объектный тип.

Наличие записи аудита о вставки в логе атрибута и объекта.

Major

DB8

Поддержка аудита изменения объекта с атрибутом типа DATE

Поддержка функционирования аудита на изменение объекта с атрибутом типа DATE

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных DATE.

2. Выбрать объект данного объектного типа.

3. Изменить выбранный объект.

4.Вывести аудит на атрибут, на объект и на выбранный объект.

Наличие записи аудита о изменении в логе атрибута и объекта.

Major

DB9

Поддержка аудита удаления объекта с атрибутом типа DATE

Поддержка функционирования аудита на удаление объекта с атрибутом типа DATE

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных DATE.

2. Выбрать объект данного объектного типа.

3. Удалить выбранный объект.

4.Вывести аудит на атрибут, на объект и на выбранный объект.

Наличие записи аудита о удаление в логе атрибута и объекта.

Major

DB10

Поддержка аудита вставки нового объекта с атрибутом типа CLOB

Поддержка функционирования аудита на вставку нового объекта с атрибутом типа CLOB

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных CLOB.

2. Создать новый объект выбранного объектного типа.

3.Вывести аудит на атрибут, на объект и на выбранный объектный тип.

Наличие записи аудита о вставки в логе атрибута и объекта.

Major

DВ11

Поддержка аудита изменения объекта с атрибутом типа CLOB

Поддержка функционирования аудита на изменение объекта с атрибутом типа CLOB

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных CLOB.

2. Выбрать объект данного объектного типа.

3. Изменить выбранный объект.

4.Вывести аудит на атрибут, на объект и на выбранный объект.

Наличие записи аудита о изменении в логе атрибута и объекта.

Major

DB12

Поддержка аудита удаления объекта с атрибутом типа CLOB

Поддержка функционирования аудита на удаление объекта с атрибутом типа CLOB

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных CLOB.

2. Выбрать объект данного объектного типа.

3. Удалить выбранный объект.

4.Вывести аудит на атрибут, на объект и на выбранный объект.

Наличие записи аудита о удаление в логе атрибута и объекта.

Major

DB13

Поддержка аудита вставки нового объекта с атрибутом типа DICTIONARY

Поддержка функционирования аудита на вставку нового объекта с атрибутом типа DICTIONARY

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных CLOB.

2. Создать новый объект выбранного объектного типа.

3.Вывести аудит на атрибут, на объект и на выбранный объектный тип.

Наличие записи аудита о вставки в логе атрибута и объекта.

Major

DВ14

Поддержка аудита изменения объекта с атрибутом типа DICTIONARY

Поддержка функционирования аудита на изменение объекта с атрибутом типа DICTIONARY

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных DICTIONARY.

2. Выбрать объект данного объектного типа.

3. Изменить выбранный объект.

4.Вывести аудит на атрибут, на объект и на выбранный объект.

Наличие записи аудита о изменении в логе атрибута и объекта.

Major

DB15

Поддержка аудита удаления объекта с атрибутом типа DICTIONARY

Поддержка функционирования аудита на удаление объекта с атрибутом типа DICTIONARY

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных DICTIONARY.

2. Выбрать объект данного объектного типа.

3. Удалить выбранный объект.

4.Вывести аудит на атрибут, на объект и на выбранный объект.

Наличие записи аудита о удаление в логе атрибута и объекта.

Major

DB16

Поддержка аудита вставки нового объекта с атрибутом типа MULTILANG

Поддержка функционирования аудита на вставку нового объекта с атрибутом типа MULTILANG

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных MULTILANG.

2. Создать новый объект выбранного объектного типа.

3.Вывести аудит на атрибут, на объект и на выбранный объектный тип.

Наличие записи аудита о вставки в логе атрибута и объекта.

Major

DВ17

Поддержка аудита изменения объекта с атрибутом типа MULTILANG

Поддержка функционирования аудита на изменение объекта с атрибутом типа MULTILANG

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных MULTILANG.

2. Выбрать объект данного объектного типа.

3. Изменить выбранный объект.

4.Вывести аудит на атрибут, на объект и на выбранный объект.

Наличие записи аудита о изменении в логе атрибута и объекта.

Major

DB18

Поддержка аудита удаления объекта с атрибутом типа MULTILANG

Поддержка функционирования аудита на удаление объекта с атрибутом типа MULTILANG

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных MULTILANG.

2. Выбрать объект данного объектного типа.

3. Удалить выбранный объект.

4.Вывести аудит на атрибут, на объект и на выбранный объект.

Наличие записи аудита о удаление в логе атрибута и объекта.

Major

DB19

Поддержка аудита вставки нового объекта с атрибутом типа NUMBER

Поддержка функционирования аудита на вставку нового объекта с атрибутом типа NUMBER

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных NUMBER.

2. Создать новый объект выбранного объектного типа.

3.Вывести аудит на атрибут, на объект и на выбранный объектный тип.

Наличие записи аудита о вставки в логе атрибута и объекта.

Major

DВ20

Поддержка аудита изменения объекта с атрибутом типа NUMBER

Поддержка функционирования аудита на изменение объекта с атрибутом типа NUMBER

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных NUMBER.

2. Выбрать объект данного объектного типа.

3. Изменить выбранный объект.

4.Вывести аудит на атрибут, на объект и на выбранный объект.

Наличие записи аудита о изменении в логе атрибута и объекта.

Major

DB21

Поддержка аудита удаления объекта с атрибутом типа NUMBER

Поддержка функционирования аудита на удаление объекта с атрибутом типа NUMBER

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных NUMBER.

2. Выбрать объект данного объектного типа.

3. Удалить выбранный объект.

4.Вывести аудит на атрибут, на объект и на выбранный объект.

Наличие записи аудита о удаление в логе атрибута и объекта.

Major

DB22

Поддержка аудита вставки нового объекта с атрибутом типа VARCHAR2

Поддержка функционирования аудита на вставку нового объекта с атрибутом типа VARCHAR2

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных VARCHAR2.

2. Создать новый объект выбранного объектного типа.

3.Вывести аудит на атрибут, на объект и на выбранный объектный тип.

Наличие записи аудита о вставки в логе атрибута и объекта.

Major

DВ23

Поддержка аудита изменения объекта с атрибутом типа VARCHAR2

Поддержка функционирования аудита на изменение объекта с атрибутом типа VARCHAR2

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных VARCHAR2.

2. Выбрать объект данного объектного типа.

3. Изменить выбранный объект.

4.Вывести аудит на атрибут, на объект и на выбранный объект.

Наличие записи аудита о изменении в логе атрибута и объекта.

Major

DB24

Поддержка аудита удаления объекта с атрибутом типа VARCHAR2

Поддержка функционирования аудита на удаление объекта с атрибутом типа VARCHAR2

PL\SQL Developer 7.1.5.1398

1. Выбрать объектный тип, который имеет атрибут типа данных VARCHAR2.

2. Выбрать объект данного объектного типа.

3. Удалить выбранный объект.

4.Вывести аудит на атрибут, на объект и на выбранный объект.

Наличие записи аудита о удаление в логе атрибута и объекта.

Major

DB25

Проверка права владельца на объект

Удостовериться, что установив права владельца на объект равный 2 - владелец может просматривать и изменять объект.

PL\SQL Developer 7.1.5.1398

1.Выбрать объект.

2.Установить orights равным 2.

3. Зайти в БД с логином владельца объекта.

4. Попытаться выбрать объект.

5. Попытаться изменить объект.

Возможность просмотра и изменения объекта с логином владельца.

Critical

DB26

Проверка права владельца на объект

Удостовериться, что установив права владельца на объект равный 1 - владелец может только просматривать объект.

PL\SQL Developer 7.1.5.1398

1.Выбрать объект.

2.Установить orights равным 2.

3. Зайти в БД с логином владельца объекта.

4. Попытаться выбрать объект.

5. Попытаться изменить объект.

Возможность просмотра и невозможность изменения объекта с логином владельца.

Critical

DB27

Проверка права владельца на объект

Удостовериться, что установив права владельца на объект равный 0 - владелец не может просматривать и изменять объект.

PL\SQL Developer 7.1.5.1398

1.Выбрать объект.

2.Установить orights равным 2.

3. Зайти в БД с логином владельца объекта.

4. Попытаться выбрать объект.

Невозможность просмотра и изменения объекта с логином владельца.

Critical

DB28

Проверка права по умолчанию на объект

Удостовериться, что установив права по умолчанию на объект равный 2 - пользователь-невладелец может просматривать и изменять объект.

PL\SQL Developer 7.1.5.1398

1.Выбрать объект.

2.Установить orights равным 2.

3. Зайти в БД с логином невладельца объекта.

4. Попытаться выбрать объект.

5. Попытаться изменить объект.

Возможность просмотра и изменения объекта с логином невладельца.

Critical

DB29

Проверка права по умолчанию на объект

Удостовериться, что установив права по умолчанию на объект равный 1 - пользователь-невладелец может только просматривать объект.

PL\SQL Developer 7.1.5.1398

1.Выбрать объект.

2.Установить orights равным 2.

3. Зайти в БД с логином невладельца объекта.

4. Попытаться выбрать объект.

5. Попытаться изменить объект.

Возможность просмотра и невозможность изменения объекта с логином невладельца.

Critical

DB30

Проверка права по умолчанию на объект

Удостовериться, что установив права по умолчанию на объект равный 0 - пользователь-невладелец не может просматривать и изменять объект.

PL\SQL Developer 7.1.5.1398

1.Выбрать объект.

2.Установить orights равным 2.

3. Зайти в БД с логином невладельца объекта.

4. Попытаться выбрать объект.

Невозможность просмотра и изменения объекта с логином невладельца.

Critical

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


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

  • Инфологическая модель предметной области. Схемы простых объектов и их свойства. Построение реляционных отношений на основе инфологической модели базы данных. Сетевая и иерархическая даталогическая модели БД. Структура таблиц, реализованных в СУБД Oracle.

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

  • Схема взаимодействия подразделений предприятия. Выбор и обоснование технологии проектирования базы данных. Описание объектов базы данных. Разработка запросов на выборку, изменение, обновление и удаление данных. Интерфейсы взаимодействия с базой данных.

    курсовая работа [1,4 M], добавлен 25.05.2023

  • Семантическое моделирование данных. Основные понятия модели Entity-Relationship. Построение инфологической модели в виде диаграммы "Таблица-связь". Проектирование физической модели базы данных. Разработка формы заставки, главной, вторичных кнопочных форм.

    курсовая работа [1,5 M], добавлен 26.06.2012

  • Анализ проектирования баз данных на примере построения программы ведения информационной системы картотеки ГИБДД. Основные функции базы данных. Обоснование выбора технологий проектирования и реализации базы данных. Описание информационного обеспечения.

    курсовая работа [753,0 K], добавлен 27.08.2012

  • Разработка информационной системы учёта данных о клиентах, товарах и услугах в среде MS Access. Технология функционирования существующей ИС компьютерной компании. Модификация инфологической модели БД, проектирование новых экранных форм и отчетов.

    курсовая работа [1,5 M], добавлен 20.06.2014

  • Разработка информационно-аналитической системы агентства недвижимости. Обоснование выбора архитектуры базы данных и СУБД. Моделирование потоков данных (DFD диаграмм). Проектирование инфологической модели данных с использованием модели "сущность-связь".

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

  • Рассмотрение теоретических основ проектирования. Анализ предметной области и разработка таблиц базы данных. Заполнение таблиц, поиск данных с помощью фильтра. Создание форм, разработка запросов. Создание и настройка отчетов, составление приложения.

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

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

    курсовая работа [981,4 K], добавлен 05.11.2011

  • Описание предметной области разрабатываемой базы данных для теннисного клуба. Обоснование выбора CASE-средства Erwin 8 и MS Access для проектирования базы данных. Построение инфологической модели и логической структуры базы данных, разработка интерфейса.

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

  • Инфологическое моделирование предметной области. Построение диаграммы потоков данных. Обоснование выбора СУБД. Проектирование пользовательского интерфейса. Комплект поставки и порядок установки системы. Описание функционирования приложения и таблиц.

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

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